ลิงค์ลิสต์ คือ โครงสร้างข้อมูลที่ได้มาจากการเชื่อมโยงโครงสร้างเข้าด้วยกันเป็นสายพอยเตอร์
|
Suda |
|
|
|
Yupin |
|
|
|
|
|
Aree |
|
|
</span>
start
ภาพข้างต้นเรียกว่า ลิงค์ลิสต์แบบโยงเดี่ยว ซึ่งมี start เป็นพอยเตอร์ที่ชี้อยู่ที่หัวหรือด้านหน้าสุด ลิงค์ลิสต์นี้ประกอบด้วยโครงสร้างหรือโหนด 3 โหนด แต่ละโหนดเก็บชื่อตามลำดับ คำถามที่ตามมาคือ เราสร้างลิงค์ลิสต์ข้างต้นได้อย่างไร เพื่อความเข้าใจก่อนอื่นให้พิจารณาการประกาศตัวแปรให้กับลิงค์ลิสต์ข้างต้นดังนี้
#define STRING25 25
typedef struct ptr
{
char name [STRING25];
struct ptr * next;
} Ptr;
Ptr *star, *p, *q;
แสดงว่า start p และ q เป็นตัวแปรชนิดพอยเตอร์ที่ชี้ไปยังเซลล์ ซึ่งเก็บโครงสร้างที่ประกอบด้วยฟิลด์ย่อย คือ
- ฟิลด์ข้อมูล (Data Field) ได้แก่ name
- ฟิลด์ตัวชี้ (Linked Field) ไดแก่ next
ซึ่งฟิลด์ตัวชี้จะทำหน้าที่เก็บตัวชี้ของโครงสร้างถัดไป ดังนั้น ฟิลด์ next นี้เองที่ช่วยในการเชื่อมโยงทุกโครงสร้างเข้าด้วยกัน
วิธีการเชื่อมโยงโหนดเข้าด้วยกัน
จากการสั่ง new พอยเตอร์ start p และ q แล้ว เมื่อนำรายชื่อเข้าเก็บในแต่ละโหนดดังคำสั่งที่ผ่านมา จะได้ภาพรวมของหน่วยความจำดังนี้
|
Suda |
|
|
|
Yupin |
|
|
|
|
|
Aree |
|
|
</span>
|
|
</span>
|
|
</span>
start p q
ในกรณีที่ต้องการเชื่อมโยงโหนดทั้ง 3 เข้าด้วยกัน สามารถใช้คำสั่ง
Start - > next = p ;
- การสร้างลิงค์ลิสต์โดยใช้ลูป
สมมติให้ข้อมูลที่จะป้อนผ่านแป้นพิมพ์มีลักษณะดังนี้
Anong
Malee
Suda
Yupa
<eof>
หากต้องการสร้างลิสต์จากข้อมูลในรูปแบบข้างต้น สามารถสร้างลิสต์ใน 3 ลักษณะ คือ
1. เอาโหนดแทรกด้านหน้าของลิสต์เสมอ
2. เอาโหนดแทรกด้านปลายของลิสต์เสมอ
3. เอาโหนดแทรกได้ทุกที่เพื่อให้ลิสต์ได้เรียงลำดับ