Definisi dasar sebuah node dalam Singly Linked List:
struct Node {
int data;
Node* next;
};
Node* adalah tipe data pointer yang menunjuk ke objek bertipe Node.
Pointer next menghubungkan satu node ke node berikutnya.
Operasi dasar yang sering dilakukan:
Langkah-langkah menyisipkan node di posisi paling awal:
next node baru ke head saat ini.head ke node baru tersebut.head sebelum langkah 2, atau Anda akan kehilangan sisa list!
void insertDepan(Node*& head, int nilai) {
Node* baru = new Node; // 1. Buat node
baru->data = nilai;
baru->next = head; // 2. Sambungkan ke head lama
head = baru; // 3. Head sekarang di node baru
}
*Simbol & pada Node*& head berarti kita mengirim pointer secara reference agar perubahan di dalam fungsi permanen.
Langkah-langkah menyisipkan node di posisi terakhir:
next-nya ke NULL.head.next-nya NULL).next node terakhir ke node baru.void insertBelakang(Node*& head, int nilai) {
Node* baru = new Node;
baru->data = nilai;
baru->next = NULL;
if (head == NULL) { // Jika list kosong
head = baru;
return;
}
Node* temp = head;
while (temp->next != NULL) { // Cari ekor
temp = temp->next;
}
temp->next = baru; // Sambungkan
}
Menyisipkan di tengah-tengah list:
baru->next = target->next;target->next = baru;Langkah-langkah menghapus node pertama:
temp untuk menunjuk ke head.head ke head->next.delete pada temp.Menghapus pointer saja tidak cukup, kita harus membebaskan memori yang digunakan.
void deleteDepan(Node*& head) {
if (head == NULL) return; // List kosong
Node* temp = head; // 1. Simpan alamat lama
head = head->next; // 2. Loncat ke node ke-2
delete temp; // 3. Bebaskan memori
}
Menghapus node di tengah atau belakang:
curr untuk mencari node yang dihapus.prev.prev->next = curr->next;delete curr;Coba sendiri operasi insert dan delete dengan interaksi di bawah:
->next pada pointer NULL (Crash).delete objek di heap.Jika kita memiliki list kosong, apa hasil akhir dari operasi berikut?
insertDepan(10) → List: [10]insertDepan(5) → List: [5, 10] (5 jadi head baru)deleteDepan() → List: [10] (5 dihapus)Jadi, nilai yang tersisa di dalam list adalah 10.
Buatlah program C++ dengan sistem menu interaktif:
Topik yang kemungkinan besar muncul terkait Linked List:
Gunakan playground di Slide 15 untuk melatih intuisi pointer Anda!