L
Link List

 

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

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

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

 

 

 


                              (a)      Next(Prior(P)) = Next(P) เป็นการใช้ตัวชี้ left ของโหนดที่ต้องการลบอ้างกลับไปยังโหนดก่อนหน้าเพื่อชี้ Right ชี้ไปยังโหนดถัดไปต่อจากโหนดที่ต้องการลบ ในรูปที่ 21

 

 

 

 


                    (b)    Prior(Next(P)) = Prior(P) เป็นการใช้ตัวชี้ Right ของโหนดที่ต้องการลบอ้างไปยังโหนดถัดไปเพื่อสร้างตัวชี้ Left ชี้กลับไปยังโหนดก่อนหน้าโหนดที่ต้องการลบในรูปที่ 22


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


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

รูปที่ 23  ลิงค์ลิสต์สองทางหลังจากลบโหนด 2 ออกไปแล้ว

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

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

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