วันอังคารที่ 21 กรกฎาคม พ.ศ. 2552

Linked List

DTS 04-15-07-09
Linked List



ลิงค์ลิสต์เป็นการจัดเก็บชุดข้อมูลเชื่อมโยงต่อเนื่องกันไปตามลำดับ ในลิสต์จะประกอบไปด้วยข้อมูลที่เรียกว่าโหนด (node)
โนดจะประกอบไปด้วย 2 ส่วนคือ
Data จะเก็บข้อมูลของอิลิเมนท์
ส่วนที่สอง คือ Link Field จะทำหน้าที่เก็บตำแหน่งของโนดต่อไปในลิสต์
ในส่วนของdataอาจจะเป็นรายการเดียวหรือเป็นเรคคอร์ดก็ได้ในส่วนของ linkจะเป็นส่วนที่เก็บตำแหน่งของโหนดถัดไปใน โหนดสุดท้ายจะเก็บคา Null ซึ่งไม่ได้ชี้ไปยังตำแหน่งใด ๆ เป็นตัวบอกการ สิ้นสุดของลิสตในลิงค์ลิสตจะมีตัวแปรสำหรับชี้ ตำแหน่งลิสต (List pointer variable)ซึ่งเป็นที่เก็บตำแหน่งเริ่มต้นของลิสต ซึ่งก็ คือโหนดแรกของลิสตนั้นเอง ถ้าลิสต์ไม่มีข้อมูล ข้อมูลในโหนดแรกของลิสตจะเป็น Null
ในส่วนของdataอาจจะเป็นรายการเดียวหรือเป็นเรคคอร์ดก็ได้ในส่วนของ linkจะเป็นส่วนที่เก็บตำแหน่งของโหนดถัดไปใน โหนดสุดท้ายจะเก็บคา Null ซึ่งไม่ได้ชี้ไปยังตำแหน่งใด ๆ เป็นตัวบอกการ สิ้นสุดของลิสตในลิงค์ลิสตจะมีตัวแปรสำหรับชี้ ตำแหน่งลิสต (List pointer variable)ซึ่งเป็นที่เก็บตำแหน่งเริ่มต้นของลิสต ซึ่งก็ คือโหนดแรกของลิสตนั้นเอง ถ้าลิสต์ไม่มีข้อมูล ข้อมูลในโหนดแรกของลิสตจะเป็น Null
โครงสร้างข้อมูลแบบลิงค์ลิสตโครงสร้างข้อมูลแบบลิงค์ลิสตจะแบ่งเป็น 2 ส่วน คือ
1. Head Structure จะประกอบไปด้วย 3 ส่วน ได้แก่ จำนวนโหนดในลิสต (Count)พอยเตอร์ที่ชี้ไปยัง โหนดที่เข้าถึง(Pos) และพอยเตอร์ที่ชี้ไปยังโหนดข้อูมลแรกของลิสต (Head)
2. Data Node Structure จะประกอบไปด้วยข้อมูล (Data) และพอยเตอร์ที่ชี้ไปยังข้อมูลตัวถัดไป
โครงสร้างข้อมูลแบบลิงค์ลิสต์
โครงสร้างข้อมูลแบบลิงค์ลิสต์จะแบ่งเป็น 2 ส่วน คือ
1. Head Structure จะประกอบไปด้วย 3 ส่วน
ได้แก่ จำนวนโหนดในลิสต์ (Count) พอยเตอร์ที่ชี้ไปยัง
โหนดที่เข้าถึง (Pos) และพอยเตอร์ที่ชี้ไปยังโหนดข้อมูล
แรกของลิสต์ (Head)
2. Data Node Structure จะประกอบไปด้วยข้อมูล
การลบข้อมูล
การลบข้อมูลมีหลายวิธี แต่ล่ะวิธีจะแตกต่างตามตำแหน่งของโนดที่ต้องการลบ วิธีลบโนดในแต่ล่ะตำแหน่งมีดังนี้
ตำแหน่งต้นลิสต์ ทำได้โดยให้โนดพิเศษชี้ไปโนดที่2ของลิสต์
ตำแหน่งท้ายลิสต์ การลบโนด ทำได้โดยให้ตัวชี้ของโนดรองสุดท้ายมีค่าเป็นNULL
ตำแหน่งท้ายลิสต์ กำหนดให้ตัวชี้ prev ชี้ที่โนดก่อนหน้าโนดที่ต้องการลบ และตัวชี้ p ชี้ที่โนดที่ต้องการลบ
ในการลบโนดควรตรวจสอบก่อนว่าในลิสต์นั้นมีสมาชิกกี่จำนวน ถ้าเหลือเพียงจำนวนเดียวก็หมายความว่า หลังจากลบโนดทิ้งแล้วจะกลายเป็นลิสต์ว่างไม่จำเป็นต้องเชื่อมโยงโนดใหม่

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

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