วันเสาร์ที่ 25 กรกฎาคม พ.ศ. 2552

DTS : 05-22/07/2552

Linked List

ลิงค์ลิสต์ คือ วิธีการเก็บข้อมูลอย่างต่อเนื่องของอิลิเมนต์ โดยมีพอยเตอร์เป็นตัวเชื่อม แต่ละอิลิเมนต์ เรียกว่า โหนด แต่ละโหนดประกอบด้วย 2 ส่วน คือ


1. Data จะเก็บข้อมูลข่าวสารที่มีโครงสร้างข้อมูลเบื้องต้นหรือเรียบง่าย
2. Link Field เป็นตัวชี้หรือพอยเตอร์เก็บค่าแอดเดรสใช้อ้างไปยังโหนดถัดไปในหน่วยความจำ

โครงสร้างข้อมูลแบบลิงค์ลิสต์
1. Head Structure ประกอบด้วย 3 ส่วน คือ จำนวนโนดแต่ละลิสต์, พอยเตอร์ที่ชี้ไปยังโหนดที่เข้าถึง และพอยเตอร์ที่ชี้ไปยังข้อมูลแรกของลิสต์
2. Data Node Structure ประกอบด้วยข้อมูลและพอยเตอร์ที่ชี้ไปยังข้อมูลตัวถัดไป

กระบวนงานและฟังก์ชั่นที่ใช้ดำเนินงานพื้นฐาน
1. กระบวนงาน Create List ทำหน้าที่สร้างลิสต์ว่าง
2. กระบวนงาน Insert Node ทำหน้าที่เพิ่มข้อมูลในลิสต์ บริเวณที่ต้องการ
3. กระบวนงาน Delete Node ทำหน้าที่ลบสมาชิกในลิสต์ บริเวณตำแหน่งที่ต้องการ
4. กระบวนงาน Search list ทำหน้าที่ค้นหาข้อมูลในลิสต์ที่ต้องการ
5. กระบวนงาน Traverse ทำหน้าที่ท่องไปในลิสต์เพื่อเข้าถึงและประมวลผล
6. กระบวนงาน Retrieve Node ทำหน้าที่หาตำแหน่งข้อมูลจากลิสต์
7. ฟังก์ชั่น EmptyList ทำหน้าที่ทดสอบว่าลิสต์ว่าง
8. ฟังก์ชั่น FullList ทำหน้าที่ทดสอบว่าลิสต์เต็มหรือไม่
9. ฟังก์ชั่น list count ทำหน้าที่นับจำนวนข้อมูลที่อยู่ในลิสต์
10. กระบวนงาน destroy list ทำหน้าที่ทำลายลิสต์

Linked List แบบซับซ้อน
1. Circular Linked List หรือลิงค์ลิสต์ทางเดียว โดยปกติการใช้ลิงค์ลิสต์ทางเดียว เมื่อตัวพอยเตอร์ P ชี้ไปยังโหนดหนึ่งจะไม่สามารถชี้กลับไปยังโหนดก่อนหน้านี้ได้ วิธีการอย่าหนึ่งที่ทำให้สามารถวิ่งจากโหนดหนึ่งไปยังโหนดอื่นๆได้ในลิงค์ลิสต์ โดยให้ชี้ของโหนดสุดท้ายซึ่งเดิมเป็นค่า Null
2. Double Linked List ลิงค์ลิสต์ที่มีการทำงาน 2 ทิศทาง บางครั้งการทำงานแบบลิงค์ลิสต์อาจต้องการวิ่งไปยังโหนกต่างๆในลิงค์ลิสต์โดยการถอยกลับไปยังโหนดก่อนหน้าหรือลบแต่ละโหนด เพื่อให้เกิดความสะดวกและประสิทธิภาพ จึงนำลิงค์ลิสต์ 2 ทางมาใช้แทนลิงค์ลิสต์ทางเดียว

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

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