Doubly Linked List

ลิงค์ลิสต์แบบสองทิศทาง (Doubly Linked List)

            ใน Link  List  ที่กล่าวมาแล้ว  ทั้งที่เป็น  Single  Link  List  หรือ Circular  Link  List  ท่องเที่ยวไปใน  node  ต่างๆ ไปได้ในทิศทางเดียวไม่สามารถย้อนกลับ  ในการท่องเที่ยวไปใน  node  ถ้าต้องการ node ที่ผ่านไปแล้วจะต้องเริ่มต้นใหม่เสมอ  ซึ่งเป็นการเสียเวลามาก  ดังนั้น  เพื่อให้สามารถย้อนกลับไปยัง node  ที่ผ่านมาได้ทันที จึงได้กำหนดให้แต่ละ node มี pointer  สำหรับชี้กลับ โดยแต่ละ node มี 2  Pointer คือ F และ B  ซึ่งจะชี้ ไปยัง node ถัดไปและก่อนหน้าของ node  นั้นตามลำดับ  รูปแบบแต่ละ  node เป็นดังนี้


การแทรกโหนดใน ลิงค์ลิสต์แบบสองทิศทาง

ขั้นตอนการแทรกรายการ
  1. กำหนดชื่อให้กับ node  เช่น node n  ใน  AVAIL แล้วเปลี่ยนไปชี้ยัง  node  ถัดจาก node n ของ Free  pool
              2. ที่ node n  ตัว pointer  F  จะไปชี้ที่  node q
              3. 
ที่ node n ตัว pointer  B  ชี้ไปที่ node  p
              4. 
ที่ node  p ตัว pointer F จะเปลี่ยนจากชี้ที่ node  q ไปชี้  node  n แทน
              5. ที่
node q ตัว  pointer  จะเปลี่ยนจากชี้ที่  node p ไปชี้ node n แทน



การลบโหนดใน ลิงค์ลิสต์แบบสองทิศทาง

ขั้นตอนการลบรายการ

  1. ตัว pointer  F ของ  node p  ชี้ไปยังตำแหน่งของ node q ซึ่งเดิม pointer  B  ของ node n ชี้อยู่
  2. ตัว pointer B ของ  node q  ชี้ไปยังตำแหน่งของ node p ซึ่งเดิม pointer  B  ของ node n ชี้ อยู่
  3. ตัว pointer F ของ  node n ชี้ไปยัง  pointer  ของ  AVAIL ชี้อยู่
  4. ตัว pointer ของ AVAIL ชี้ไปยัง  node n