Linked List เป็นโครงสร้างข้อมูลเชิงเส้นที่มีโหนดหลายตัวที่เชื่อมต่อกัน แต่ละโหนดประกอบด้วยสองฟิลด์ คือ Data Field และที่อยู่ของโหนดถัดไป
สมมติว่าเรามี singly linked list งานคือแทรกโหนดที่จุดเริ่มต้นของ linked list ที่กำหนด ตัวอย่างเช่น
ตัวอย่างอินพุต 1
1 → 2 → 3 → 4
แทรก '5' ที่หัวหรือจุดเริ่มต้นของ linked list ที่กำหนด
เอาต์พุต
5 → 1 → 2 → 3 → 4
คำอธิบาย
หลังจากแทรกโหนดที่จุดเริ่มต้นของ linked list จะพิมพ์ linked list เป็น 5 → 1 → 2 → 3 → 4
วิธีการแก้ปัญหา
เริ่มต้นเรามี linked list ที่ประกอบด้วยโหนด แต่ละโหนดมีข้อมูลและที่อยู่ไปยังโหนดถัดไป
เนื่องจากเราสร้างโหนดไว้แล้ว เราจะสร้างฟังก์ชันที่จะรับที่อยู่ของโหนด head เป็นพารามิเตอร์และข้อมูลที่เราต้องแทรกที่จุดเริ่มต้นของ linked list และแทรกข้อมูลที่จุดเริ่มต้น ตอนนี้ชี้ head ไปที่โหนดที่แทรกใหม่
- ฟังก์ชัน insertAtHead(node*& head, int data) รับที่อยู่ของโหนด head และข้อมูลที่เราต้องแทรก
- สร้างโหนดใหม่และแทรกข้อมูลลงไป
- ย้าย head ไปที่โหนดที่สร้างใหม่
- พิมพ์ linked list
ตัวอย่างโค้ด
#include <iostream>
using namespace std;
class Node {
public:
int data;
Node* next;
Node(int d) {
data = d;
next = NULL;
}
};
void insertAtHead(Node* &head, int data) {
Node* n = new Node(data);
n->next = head;
head = n;
}
void print(Node* head) {
while (head != NULL) {
cout << head->data << "->";
head = head->next;
}
}
int main() {
Node* head = NULL;
insertAtHead(head, 5);
insertAtHead(head, 2);
insertAtHead(head, 8);
insertAtHead(head, 3);
print(head);
return 0;
}
ผลลัพธ์
การรันโค้ดด้านบนจะสร้างเอาต์พุตเป็น
3 → 8 → 2 → 5 →
การแทรกโหนด 3, 8, 2 และ 5 ที่จุดเริ่มต้นของ linked list จะสร้างเอาต์พุตเป็น 3 → 8 → 2 → 5 →