Circularly Linked List

ลิงค์ลิสต์แบบวงกลม (Circularly Linked List)

                เป็นโครงสร้างที่แตกต่างจาก Single Linked List ที่โครงสร้าง แบบนี้ไม่มี Null Link ลิงค์ลิสต์แบบวงกลมเป็นอีกรูปแบบของลิงค์ลิสต์ที่กำหนดทิศทางของพอยน์เตอร์ชี้ไปในทิศทางเดียวกัน แต่ในโหนดสุดท้ายจะกำหนดพอยน์เตอร์ใช้ชี้กลับมายังโหนดเริ่มต้นอีกครั้งเพื่อที่จะได้สามารถเข้าสู่โหนดใดก็ได้โดยที่ไม่ต้องเริ่มการเข้าจากโหนดต้นลิสต์ และมีการปรับโครงสร้างเพื่อนให้มีการทำงานที่ดีขึ้น

การแทรกโหนดใน ลิงค์ลิสต์แบบวงกลม            
             จะมีขั้นตอนเหมือนแบบ
Single Linked List ยกเว้นกรณีเฉพาะเมื่อ node n อยู่ท้าย list

ขั้นตอนการแทรกรายการ


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


ถ้า node n เข้าต่อท้ายในตำแหน่งสุดท้ายของ list , pointer ของ node n จะชี้ไปยัง node แรก ถ้า node p คือ node สุดท้ายแล้ว pointer ของ node p จะชี้ไปยัง node n ( รูปภาพ 1.3 )

การลบโหนดใน ลิงค์ลิสต์แบบวงกลม
        จะมีขั้นตอนเหมือนแบบ Single Linked List ยกเว้นกรณีเฉพาะเมื่อ node n อยู่
ท้าย
list        

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

ถ้า node n เป็น node สุดท้ายของ list , pointer ของ node p จะชี้ไปยัง node แรก