รายการที่เชื่อมโยงอย่างเดียวคือโครงสร้างข้อมูลประเภทหนึ่งที่ประกอบด้วยโหนดที่สร้างขึ้นโดยใช้โครงสร้างการอ้างอิงตนเอง แต่ละโหนดเหล่านี้ประกอบด้วยสองส่วน คือ ข้อมูลและการอ้างอิงไปยังโหนดรายการถัดไป จำเป็นต้องอ้างอิงถึงโหนดรายการแรกเท่านั้นเพื่อเข้าถึงรายการที่เชื่อมโยงทั้งหมด นี้เรียกว่าหัว โหนดสุดท้ายในรายการชี้ไปที่ค่าว่างดังนั้นจึงเก็บค่า NULL ไว้ในส่วนนั้น
มีโปรแกรมสำหรับใช้งานรายการเชื่อมโยงอย่างเดียวดังนี้
ตัวอย่าง
#include <iostream> using namespace std; struct Node { int data; struct Node *next; }; struct Node* head = NULL; void insert(int new_data) { struct Node* new_node = (struct Node*) malloc(sizeof(struct Node)); new_node->data = new_data; new_node->next = head; head = new_node; } void display() { struct Node* ptr; ptr = head; while (ptr != NULL) { cout<< ptr->data <<" "; ptr = ptr->next; } } int main() { insert(3); insert(1); insert(7); insert(2); insert(9); cout<<"The linked list is: "; display(); return 0; }
ผลลัพธ์
The linked list is: 9 2 7 1 3
ในโปรแกรมข้างต้น โครงสร้างโหนดจะสร้างโหนดรายการเชื่อมโยง ประกอบด้วยข้อมูลและตัวชี้ไปยังโหนดรายการที่เชื่อมโยงถัดไป ได้ดังนี้
struct Node { int data; struct Node *next; };
ฟังก์ชัน insert() แทรกข้อมูลลงในจุดเริ่มต้นของรายการที่เชื่อมโยง มันสร้าง new_node และแทรกตัวเลขในฟิลด์ข้อมูลของ new_node จากนั้น new_node จะชี้ไปที่ส่วนหัว ในที่สุดส่วนหัวคือ new_node นั่นคือรายการที่เชื่อมโยงเริ่มต้นจากที่นั่น ด้านล่างนี้
void insert(int new_data) { struct Node* new_node = (struct Node*) malloc(sizeof(struct Node)); new_node->data = new_data; new_node->next = head; head = new_node; }
ฟังก์ชั่น display() แสดงรายการที่เชื่อมโยงทั้งหมด ptr แรกชี้ไปที่หัว จากนั้นจะส่งต่อไปยังโหนดถัดไปอย่างต่อเนื่องจนกว่าจะพิมพ์ค่าข้อมูลทั้งหมดของโหนด ด้านล่างนี้
void display() { struct Node* ptr; ptr = head; while (ptr != NULL) { cout<< ptr->data <<" "; ptr = ptr->next; } }
ในฟังก์ชัน main() ค่าต่าง ๆ แรกจะถูกแทรกลงในรายการที่เชื่อมโยงโดยการเรียก insert() จากนั้นรายการที่เชื่อมโยงจะปรากฏขึ้น ด้านล่างนี้
int main() { insert(3); insert(1); insert(7); insert(2); insert(9); cout<<"The linked list is: "; display(); return 0; }