L
Link List

 

   โดยทั่วไปลิงค์ลิสต์จะมีโหนดที่มีส่วนการเชื่อมต่อชี้ไปยังโหนดถัดไปเพียงทางเดียว (Unidirectional)     ดังที่ผ่านมา เรียกว่าลิงค์ลิสต์ทางเดียว (Singly Linked List ) ซึ่งนอกจากจะมีชุดปฏิบัติการแทรกและลบโหนดแล้วยังมีอัลกอรึทึมในการจัดการลิงค์แบบอื่น ๆ ดังนี้
                1.การค้นหาแต่ละโหนด เป็นการเริ่มต้นที่โหนดแรกจากนั้นหาไปทีละโหนดตามลำดับที่เชื่อมต่อกันจนกว่าจะพบโหนดในลิงค์ลิสต์ดังในตารางที่ 3

ตารางที่ 3 อัลกอริทึมการวิ่งไปยังแต่ละโหนดในลิงค์ลิสต์
1.กำหนดให้ตัวแปรพอยน์เตอร์ P ชี้ไปยังโหนดแรก
2.ถ้าตัวแปรพอยน์เตอร์ P ยังไม่เท่ากับ NULL ให้ทำต่อไปนี้
                2.1นำข้อมูลที่อยู่ในโหนดมาใช้งานโดยใช้ Info(P)
                2.2กำหนดให้ตัวแปรพอยน์เตอร์ P ชี้ไปยังโหนดถัดไปโดยใช้ P = Next(P)


        

 

        
2.การแทรกโหนดที่ตอนต้นลิงค์ลิสต์ เป็นการสร้างโหนดใหม่ขึ้นมาและกำหนดเป็นโหนดแรกของลิงค์ลิสต์ โดยโหนดใหม่นี้ ถ้าหากให้การลบโหนดเป็นที่โหนดแรกเช่นกัน ลักษณะการทำงานจะเป็นแบบเดียวกับโครงสร้างข้อมูลสแตก ดังในรูปที่ 9 และจำนวนค่าสมาชิกที่ใส่ลงไปก็ไม่จำกัดเหมือนกับการใช้อาร์เรย์

 

 



 

                3.การแทรกโหนดที่ตอนท้ายลิงค์ลิสต์ เป็นการสร้างโหนดใหม่ขึ้นมาและนำไปต่อจากโหนดสุดท้ายของลิงค์ลิสต์ (Append) โดยโหนดสุดท้ายเดิมจะชี้ไปยังโหนดใหม่ที่กลายเป็นโหนดสุดท้ายแทน ถ้าให้การลบโหนดเป็นที่โหนดแรกทำให้ลักษณะการทำงานจะเป็นแบบเดียวกับโครงสร้างข้อมูลคิว ดังรูปที่ 10 โดยมีตัวแปรพอยน์เตอร์ Front ชี้ที่โหนดแรกและ Rear ชี้ที่โหนดสุดท้าย จำนวนค่าสมาชิกที่ใส่ลงไปก็ไม่จำกัดเหมือนกับการใช้อาร์เรย์

 

 


 

 

 


4.การสลับด้านของรายการในลิงค์ลิสต์ เป็นการสร้างลิงค์ลิสต์ใหม่ให้รายการสลับด้านกับลิงค์ลิสต์ตัวเก่า โดยให้โหนดสุดท้ายเปลี่ยนเป็นโหนดแรก และให้โหนดแรกกลายเป็นโหนดสุดท้าย

                นอกจากนี้ยังมีอัลกอรึทึมอื่น ๆ อีก เช่น การรวมสองลิงค์ลิสต์เป็นลิงค์ลิสต์เดียว หรือแยกลิงค์ลิสต์เดียวเป็นสองลิงค์ลิสต์

ลิงค์ลิสต์ทางเดียว
P
First
รูปที่ 9  การใช้ลิงค์ลิสต์ทำหน้าที่เป็นสแตก
รูปที่ 10  การใช้ลิงค์ลิสต์ทำหน้าที่เป็นคิว