บทที่ 6 โครงสร้างข้อมูลลิ้งค์ลิสต์ การจัดเก็บที่มีรูปแบบเรียงตามลำดับ (Sequential) เปลี่ยนมาใช้รูปแบบไม่เรียงตามลำดับและสมาชิกทุกตัวจะถูกเชื่อม(Link)ต่อเข้าด้วยกันเมื่อมีการลบค่าสมาชิกตัวใดออกหรือแทรกค่าสมาชิกใหม่เข้ามา ก็จะทำให้สมาชิกอื่น ๆ มีการขยับตำแหน่งตามไปด้วย
รูปแบบโครงสร้างข้อมูลลิ้งค์ลิสต์ Info Next Info Next Info Next Info Next L1 L2 ... Ln Null First Node1 Node2 Node3 Node4
โครงสร้างของโหนด Successor = Node ที่อยู่ถัดไปจาก Node ที่ใช้งานอยู่ โครงสร้างของโหนดประกอบด้วย Nodeประกอบด้วยinfo ใช้เก็บ integer และ Next ชื่อพอยเตอร์สำหรับชี้ไปยังโหนดถัดไป Successor = Node ที่อยู่ถัดไปจาก Node ที่ใช้งานอยู่ Presecessor = Node ที่อยู่ก่อนหน้าจาก Node ที่กำลังใช้งานอยู่
การแทรกโหนดไว้ในลิ้งค์ลิสต์ 1. อัลกอริทึมการแทรกโหนดใหม่ลงในลิ้งค์ลิสต์ (การแทรกโหนดระหว่างกลาง)
ฟังก์ชันการตรวจสอบลิ้งค์ลิสต์ คำสั่งที่ใช้ตรวจสอบว่าโหนดนี้เท่ากับ 2หรือไม่ถ้า ไม่ใช่ให้ทำการตรวจสอบต่อ แต่ถ้าใช่ให้ออกจากคำสั่ง p=First; do while(p-->info!=2){ p=p-->First-->Next; }
ลิ้งค์ลิสต์เดิม P | ? First ต้องการจะแทรกโหนดใหม่หลังโหนดที่มี | ? First 2 4 Null
ต้องการจะแทรกโหนดใหม่ระหว่างโหนดที่ 2 กับ 3 มีขั้นตอนดั้งนี้ 1.สร้างโหนดใหม่ที่ชื่อว่าโดยใช้พอยเตอร์ที่ชื่อว่า "N" N 2.กำหนดค่าให้กับโหนดใหม่ เช่น ให้ info = 3 คำสั่ง N info=3; ผลลัพธ์ P Null 3 Null
3.กำหนดให้พอยเตอร์ของโหนดใหม่ชี้ไปยัง Node ถัดไป คำสั่ง N Next=p next; ผลลัพธ์ N 4.ให้พอยเตอร์ของ Node ก่อนหน้าชี้ไปยังโหนด Node ใหม่ คำสั่ง p next=n; ผลลัพธ์ p 3 address of Node 4 2 N
1 address of Node 2 2 p Next 3 address of Node 4 4 Null ผลลัพธ์ที่ได้ในโหนด First 1 address of Node 2 2 p Next 3 address of Node 4 4 Null
ลิ้งค์ลิสต์เดิม P ? | First ? | First 2 4 Null
2. อัลกอริทึมการแทรกโหนดใหม่ลงในลิ้งค์ลิสต์ (การแทรกโหนดก่อนหน้า) มีขั้นตอนดังนี้ 1.สร้างโหนดใหม่ที่ชื่อว่าโดยใช้พอยเตอร์ที่ชื่อว่า "N" N 2.กำหนดค่าให้กับโหนดใหม่ เช่น ให้ info = 3 คำสั่ง N info=3; ผลลัพธ์ P Null 3 Null
ผลลัพธ์ N ผลลัพธ์ที่ได้ในโหนด First N 3 address of Node 1 4 2 1 5 3.กำหนดใหพอยเตอร์ของโหนดใหม่ชี้ไปยัง Node ถัดไป (Node 1 หรือโหนดแรก) คำสั่ง N Next=first; ผลลัพธ์ N ผลลัพธ์ที่ได้ในโหนด First N 3 address of Node 1 4 2 1 5
4.ให้พอยเตอร์ของ Node ก่อนหน้าชี้ไปยังโหนด Node ใหม่ First=n; First n First 5 Null 1 address of Node 2 2 p Next 4 Null 5
ลิ้งค์ลิสต์เดิม P | ? First | ? First 1 2 3 Null
3. อัลกอริทึมการแทรกโหนดใหม่ลงในลิ้งค์ลิสต์ (การแทรกโหนดหลังโหนดสุดท้าย) มีขั้นตอนดังนี้ คำสั่งในการตรวจสอบโหนดว่าเป็นโหนดสุดท้าย แล้วยังถ้าเป็นโหนดสุดท้ายที่ Nextจะเป็นnull p=First; do while(p-->info!=null){ p=p-->Next; }
ต้องการจะแทรกโหนดใหม่ต่อจากโหนดสุดท้าย มีขั้นตอนดั้งนี้ ต้องการจะแทรกโหนดใหม่ต่อจากโหนดสุดท้าย มีขั้นตอนดั้งนี้ 1.สร้างโหนดใหม่ที่ชื่อว่าโดยใช้พอยเตอร์ที่ชื่อว่า "N" N 2.กำหนดค่าให้กับโหนดใหม่ เช่น ให้ info = 4 คำสั่ง N info=4; ผลลัพธ์ P Null 4 Null
3.กำหนดใหพอยเตอร์ของโหนดใหม่ชี้ไปยัง Nodeสุดท้าย(p) คำสั่ง p next=n; ผลลัพธ์ First n 1 address of Node 2 p 2 p Next 3 4 Null