16.7.52

Linked List

DTS 04-15-07-2552

ลิงค์ลิสต์
ลิงค์ลิสต์เป็นการจัดเก็บชุดข้อมูลเชื่อมโยงต่อเนื่องกันไปตามลำดับ ในลิสต์จะประกอบไปด้วยข้อมูลที่เรียกว่าโหนด (node) ในหนึ่งโหนดจะประกอบด้วยส่วนของข้อมูลที่ต้องการจัดเก็บ เรียกว่าส่วน Info และส่วนที่เป็นพอยน์เตอร์ที่ชี้ไปยังโหนดถัดไป (Link) หรือชี้ไปยังโหนดอื่นๆที่อยู่ในลิสต์ หากไม่มีโหนดที่อยู่ถัดไป ส่วนที่เป็นพอยน์เตอร์หรือ Link จะเก็บค่า NULL หรือ NILL ใช้สัญลักษณ์ ^
การแทรกโหนด และการลบโหนดของรายการโยงคู่ทำได้ง่ายกว่ารายการโยงเดี่ยว เพราะการค้นหาโหนดเป้าหมายไมจำเป็นต้องใช้ตัวชี้ 2 จำนวน ไว้คอยเก็บที่อยู่โหนดก่อนหน้า และโหนดเป้าหมาย ใช้เพียงตัวชี้เดียวก็ดำเนินการได้แล้ว การเยี่ยมโหนดของรายการ แบบวงกลม และรายการโยงคู่ สามารถย้อนกลับไปเยี่ยมโหนดที่เยี่ยมมาแล้วได้ รายการแบบวงกลมใช้วิธีการเยี่ยมโหนดแบบวนรอบ จะวนกี่รอบก็ได้เพราะไม่มีตัวชี้ของโหนดจะเก็บค่า NULL ส่วนรายการโยงคู่ นำตัวชี้ด้านซ้ายมาใช้ประโยชน์ทำให้ย้อนกลับไปหาโหนดที่ผ่านมาได้




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

2. การเพิ่มข้อมูล

ตำแหน่งของโหนดใหม่ที่จะเพิ่มในลิสต์ที่มีสมาชิก มีได้หลายต่ำแหน่ง ได้แก่ต่ำแหน่งที่ต้นลิสต์ ท้ายลิสต์ และตำแหน่งต่อจากโหนดใดๆที่ระบุไว้ รวมทั้งเป็นโหนดแรกของสิลต์ที่ว่างไม่มีสมาชิก ขั้นตอนการบรรจุโหนดใหม่ ณ ต่ำแหน่งในแต่กรณี


3.การลบข้อมูล การลบข้มูล หรือลบโหนด มีหลายวิธี ดังต่อไปนี้
ต่ำแหน่งต้นลิสต์
ต่ำแหน่งท้ายลิสต์
และต่ำแหน่งกลางลิสต์


รายการแบบวงกลม ( Circular list )

โครงสร้างแบบวงกลม จะเหมือนกับการเชื่อมโยงเดี่ยว สำหรับการดำเนินการขั้นพื้นฐาน สามารถนำวิธีการโยงเดี่ยวมาดัดแปลงเพียงเล็กน้อยก็นำมาใช้งานได้ตามต้องการ







รายการโยงคู่ ( Doubly Linked List )





-แต่ละโหนดจะมีสมาชิกอย่างน้อย 3 ฟิลด์ โดยจะมีฟิลด์ llink และ rlink ทำหน้าที่ชี้ไปยังตำแหน่งของโหนดถัดไป และโหนดก่อนหน้า ดังรูป

-ลิสต์เชื่อมโยงสองทางจะมีตัวแปร head เก็บตำแหน่งของโหนดแรกของลิสต์ โดย llink ของโหนดแรกจะเป็น NULL และ rlink ของโหนดสุดท้าย ก็จะเป็น NULL ด้วยเช่นกัน


การเพิ่มข้อมูล



เป็นการสร้างโหนดใหม่ระหว่างโหนด 2 โหนด

การลบข้อมูล

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

-แบบไม่มีสมาชิก

-แบบมีสมาชิก 1 จำนวน

-แบบมีสมาชิกมากกว่า 1 จำนวน