วันอาทิตย์ที่ 19 กรกฎาคม พ.ศ. 2552

DTS04-15/07/2552

ลิงค์ลิสต์(Linked List)

ลิงค์ลิสต์ (Linked List) เป็นวิธีการเก็บ ข้อมูลอย่างต่อเนื่องของอิลิเม้นต์ต่าง ๆ โดยมีพอยเตอร์เป็นตัวเชื่อมต่อแต่ละอิลิเม้นท์ เรียกว่าโนด (Nodeซึ่งในแต่ละโนดจะประกอบไปด้วย 2 ส่วน คือ Dataจะเก็บข้อมูลของอิลิเม้นท์ และส่วนที่สอง คือ Link Field จะทำหน้าที่เก็บ ตำแหน่งของโนดต่อไปใน ลิสต์



โครงสร้างข้อมูลแบบลิงค์ลิสต์ประกอบด้วย 2 ส่วน

1.Head Structure แบ่งเป็น 3 ส่วน

-count เป็นการนับจำนวนข้อมูลที่มีอยู่ในลิสต์นั้น

-pos พอยเตอร์ที่ชี้ไปยังโหนดที่เข้าถึง

-head พอยเตอร์ที่ชี้ไปยังโหนดแรกของลิสต์

2.Data Node Structure จะประกอบด้วย ข้อมูลและพอยเตอร์ที่ชี้ไปโหนดถัดไป

การเพิ่มข้อมูลลงไปในลิงค์ลิสต์
จากที่ Head Structure ในส่วนของ count จะมีค่าเป็น 0 นั้นหมายถึงในลิสต์นั้นยังไม่มีข้อมูลใดเลย ส่วน head จะมีเครื่องหมายกากบาท นั้นหมายถึงในลิสต์นั้นไม่มีการเชื่อมโยงไปยังข้อมูลแรก แต่ถ้าต้องการเพิ่มข้อมูลลงไปในลิสต์ Data Node ในส่วนของข้อมูล (Data)จะมีค่าเก็บอยู่ แล้ว count ก็จะเปลี่ยนค่าจาก 0 เป็น 1 คือ การบ่งบอกถึงจำนวนข้อมูลที่มีอยู่ในลิสต์นั้น แล้ว head ก็จะชี้ไปยังข้อมูล (Data) ตัวแรกของลิสต์ ส่วนพอยเตอร์ที่ชี้ไปโหนดถัดไปจะเป็นเครื่องหมายกากบาทแทน

การลบข้อมูลในลิงค์ลิสต์

ถ้าต้องการลบข้อมูลตัวใดในลิสต์สามารถลบได้เลย แต่ต้องเปลี่ยน head เพื่อชี้ไปยังข้อมูลตัวแรกของลิสต์กรณีที่ลบข้อมูลตัวแรกออก แล้ว link คือ เมื่อลบข้อมูลตัวใดออกควรชี้ link ถัดไปให้ถูกต้องด้วย

กระบวนงานและฟังกชั่นที่ใช้ดำเนินงานพื้นฐาน

1. กระบวนงาน Create List หน้าที่ สร้างลิสตว่าง ผลลัพธ์ ลิสต์ว่าง

2. กระบวนงาน Insert Nodeหน้าที่เพิ่มข้อมูลลงไปในลิสตบริเวณตำแหน่งที่ต้องการข้อมูลนำเข้าลิสต์ ข้อมูล และตำแหน่งผลลัพธ์ ลิสตที่มีการเปลี่ยนแปลง

3. กระบวนงาน Delete Node หน้าที่ลบสมาชิกในลิสตบริเวณตำแหน่งที่ต้องการข้อมูลนำเข้าข้อมูลและ ตำแหน่งผลลัพธ์ ลิสตที่มีการเปลี่ยนแปลง


ลิงค์ลิสต์ (Link List)

โครงสร้างข้อมูลแบบลิงค์ลิสต์ เป็นโครงสร้างข้อมูลแบบไดนามิก โดยที่ขนาด ของมันสามารถเปลี่ยนแปลงได้ โดยสมาชิกแต่ละตัวของลิงค์ลิสต์จะถูกเรียกว่าโหนด (Node) ประกอบด้วย 2 ส่วนคือ ส่วนของข้อมูล (Data) และส่วนที่เป็นตำแหน่งที่อยู่ของ โหนดตัวต่อไปในลิงค์ลิสต์ (Next Address) หรืออาจเรียกว่า พอยเตอร์ (Pointer) ซึ่งทำให้ เราสามารถกำหนดตำแหน่งของโหนดตัวต่อไปได้ กล่าวคือ โหนดตัวแรกจะมี พอยเตอร์ ชี้ไปยังโหนดตัวที่สอง โหนดตัวที่สอง มีพอยเตอร์ชี้ไปยังโหนดตัวที่สาม เป็นเช่นนี้ไปเรื่อยๆ

ลิงค์ลิสต์แบบวงกลม (Circular Link List)

ลิงค์ลิสต์ที่มีการกำหนดให้โหนดสุดท้ายชี้ไปยังโหนดแรก ซึ่งจะเรียกลิสต์แบบนี้ว่า ลิงค์ลิสต์แบบวงกลม การท่องลิสต์แบบนี้เมื่อมาถึงโหนดสุดท้าย สามารถวนไปยัง โหนดแรกได้

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

โครงสร้างข้อมูลลิงค์ลิสต์แบบ 2 ทิศทาง เป็นโครงสร้างข้อมูลที่สมาชิกแต่ละตัวของ ลิงค์ลิสต์หรือโหนด ประกอบด้วย 3 ส่วน ส่วนแรกเป็นข้อมูล (data) ส่วนที่สอง เป็นตำแหน่งที่อยู่ของโหนดก่อนหน้า(previous address) ในลิงค์ลิสต์ ส่วนที่สาม เป็นตำแหน่งที่อยู่ของโหนดตัวต่อไป (next address) ในลิงค์สิศต์ ทำให้เราสามารถลบ หรือเพิ่มโหนดที่อยู่ก่อนหน้า และสามารถลบหรือเพิ่มโหนดที่อยู่ตามหลังโหนดนั้นๆ ได้ง่ายขึ้น รวมทั้งสามารถแสดงข้อมูลของโหนดที่อยู่ก่อนหน้า และโหนดที่อยู่ตามหลังโหนดนั้นๆได้


ไม่มีความคิดเห็น:

แสดงความคิดเห็น