L
Link List

            อัลกอริทึมในการลบโหนดออกจากลิงค์ลิสต์ดังในตารางที่ 2

ตารางที่ 2 อัลกอริทึมการลบโหนดออกจากลิงค์ลิสต์
1.ถ้าลิงค์ลิสต์ว่าง
                แจ้งกลับมาว่าลิงลิสต์ว่าง
ไม่เช่นนั้น
1.1   กำหนดตัวแปรพอยน์เตอร์ Q ชี้ไปยังโหนดที่ต้องการลบโดยใช้ Q = Next(P)
1.2   กำหนดให้ตัวชี้ของโหนดก่อนหน้าโหนดที่จะชี้ไปยังโหนดถัดไปแทนโดยใช้ Next(P) = Next(Q)
1.3   ปล่อยโหนดที่ต้องการลบเพื่อคืนพื้นที่หน่วยความจำ

ตัวอย่างลิงค์ลิสต์ในรูปที่ 5 ต่อไปนี้ เป็นอัลกอริทึมในการลบโหนดออกจากลิงค์ลิสต์ โดยเริ่มต้นให้ตัวแปรพอยน์เตอร์ P ชี้ไปโหนด 2 ซึ่งเป็นโหนดก่อนหน้าโหนด 3 ที่ต้องการลบ และขั้นตอนในการลบประกอบด้วย

 

 

 

 


             (a)       Q = Next (P) เป็นการใช้ตัวแปรพอยน์เตอร์ Q เป็นตัวช่วย กำหนดให้ชี้ไปยังโหนด 3 ที่ต้องการลบในรูปที่ 6


รูปที่ 6  กำหนดตัวแปรพอยน์เตอร์ Q ชี้ไปยังโหนดที่ต้องการลบ

(b)     Next(P) =Next (Q)  กำหนดให้ตัวชี้ของโหนด 2 ที่มีตัวแปรพอยน์เตอร์ P ชี้อยู่เปลี่ยนไปชี้ยังโหนด 4 ซึ่งเป็นโหนดถัดไปหลังโหนดที่ตัวแปรพอยน์เตอร์ Q ชี้อยู่ ในรูปที่ 7


รูปที่  7  กำหนดตัวชี้ของโหนด 2 เปลี่ยนไปชี้ยังโหนด 4 แทนโหนด 3

       (c) Free (Q) หลังจากนั้นจึงปลดปล่อยโหนดที่ต้องการลบซึ่งมีตัวพอยน์เตอร์ Q ชี้อยู่ เพื่อคืนพื้นที่หน่วยความจำของ

โหนดที่ลบไปและนำไปใช้กับงานอื่นได้ (Reuse)ได้เป็นรูปที่ 8

 

 

 

 

 


การลบโหนดออกจากลิงค์ลิสต์

รูปที่ 5  ตัวอย่างลิงค์ที่ต้องการลบโหนด 3

รูปที่ 8 ปล่อยโหนดที่ต้องการลบซึ่งมีตัวพอยน์เตอร์ Q ชี้อยู่