การทำ Link-List เพื่อใช้ในการเข้าถึงข้อมูลต่างๆได้ง่ายยิ่งขึ้น

หมวดสำหรับแบ่งบันความ รู้ต่างๆ จะมีหมวดย่อยๆ ในหมวดนี้ เช่น php, SQL, XML, CSS

Moderator: mindphp, ผู้ดูแลกระดาน

rangsan
PHP Hero Member
PHP Hero Member
โพสต์: 199
ลงทะเบียนเมื่อ: 30/04/2018 9:44 am

การทำ Link-List เพื่อใช้ในการเข้าถึงข้อมูลต่างๆได้ง่ายยิ่งขึ้น

โพสต์โดย rangsan » 05/05/2018 1:49 pm

Link-List

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

ภาพตัวอย่าง Link List

Link_list.png
Link_list.png (31.24 KiB) เปิดดู 111 ครั้ง


ชนิดของ Link List

1. ลิงค์ลิสท์เดี่ยว (Singly Linked List) เป็น Link List ที่แต่ละ Node มีเพียง 1 Link Field โดยในแต่ละ Node จะประกอบไปด้วย 2 ส่วน คือ ส่วนของข้อมูลข่าวสาร (Info) และส่วนของ Link Field

ภาพตัวอย่าง Singly Linked List
Singly_L.png
Singly_L.png (3.28 KiB) เปิดดู 111 ครั้ง


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

ภาพตัวอย่าง ส่วนที่เป็นตัวชี้โหนดถัดไปหรือ Link Field
Link_field.PNG
Link_field.PNG (1.23 KiB) เปิดดู 110 ครั้ง


ถ้าเกิดในกรณีที่ไม่มีสมาชิกใน List เลย ตัวแปร head จะต้องเก็บค่า NULL ไว้ ซึ่งรายการเชื่อมโยงแบบนี้ เรียกว่า รายการว่าง (Null List)
null_list.PNG
null_list.PNG (725 ไบต์) เปิดดู 110 ครั้ง



อ้างอิง : google.com
It’s never too late to start again.

ย้อนกลับไปยัง

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: 23 และ บุคคลทั่วไป 0 ท่าน