π§ 1. Pengertian Linked List
7
π Definisi
Linked List adalah struktur data linear yang terdiri dari sekumpulan node, di mana setiap node berisi data dan pointer (alamat) ke node berikutnya.
π§ Narasi Konseptual
Bayangkan linked list seperti rantai manusia yang saling berpegangan tangan:
- Setiap orang = node
- Tangan yang dipegang = pointer
- Orang pertama = head
- Orang terakhir = tail
β‘οΈ Jika satu node hilang, kita masih bisa menghubungkan sisanya (berbeda dengan array).
π― 2. Karakteristik Linked List
π Tabel Karakteristik
| Karakteristik | Penjelasan |
|---|---|
| Dinamis | Ukuran bisa berubah |
| Non-kontigu | Tidak berurutan di memori |
| Pointer-based | Menggunakan alamat memori |
| Fleksibel | Mudah insert/delete |
π§ Narasi
Linked list sangat cocok untuk data yang:
- Sering berubah ukuran
- Sering terjadi insert/delete
π§± 3. Struktur Node
6
π Definisi Node
Node adalah unit dasar linked list yang terdiri dari:
- Data
- Pointer ke node berikutnya
π¦ Struktur Node (C++)
struct Node {
int data;
Node* next;
};
π 4. Jenis-Jenis Linked List
πΉ A. Singly Linked List
6
π Konsep
Setiap node hanya memiliki 1 pointer (next).
π§ Narasi
Seperti jalan satu arah:
- Bisa maju
- Tidak bisa mundur
πΉ B. Doubly Linked List
7
π Konsep
Setiap node memiliki:
- Pointer ke node berikutnya
- Pointer ke node sebelumnya
π§ Narasi
Seperti jalan dua arah:
- Bisa maju dan mundur
πΉ C. Circular Linked List
6
π Konsep
Node terakhir menunjuk kembali ke node pertama.
π§ Narasi
Seperti lingkaran:
- Tidak ada akhir
- Berputar terus
βοΈ 5. Operasi Linked List
π Tabel Operasi
| Operasi | Deskripsi |
|---|---|
| Insertion | Menambah node |
| Deletion | Menghapus node |
| Traversal | Menelusuri node |
| Searching | Mencari data |
β 6. Insertion (Penyisipan)
7
π Konsep
Menambahkan node ke linked list.
π Jenis Insertion
- Awal (head)
- Tengah
- Akhir (tail)
π§ Narasi
Tidak perlu menggeser elemen seperti array
β‘οΈ Hanya mengubah pointer
π» Contoh (C++)
void insertHead(Node*& head, int value){
Node* newNode = new Node();
newNode->data = value;
newNode->next = head;
head = newNode;
}
β 7. Deletion (Penghapusan)
8
π Konsep
Menghapus node dengan mengubah pointer.
π§ Narasi
Node tidak benar-benar βhilangβ, tetapi:
β‘οΈ dilepaskan dari rantai
β‘οΈ memori dibebaskan
π» Contoh
void deleteHead(Node*& head){
Node* temp = head;
head = head->next;
delete temp;
}
π 8. Traversal Linked List
8
π Konsep
Mengunjungi semua node dari head ke tail.
π» Contoh
void traverse(Node* head){
Node* temp = head;
while(temp != NULL){
cout << temp->data << " ";
temp = temp->next;
}
}
π§ Kompleksitas
β‘οΈ O(n)
π 9. Searching Linked List
π Konsep
Mencari data dengan menelusuri node satu per satu.
π§ Narasi
Linked list tidak memiliki indeks seperti array
β‘οΈ Harus dicek satu per satu
π» Contoh
bool search(Node* head, int key){
Node* temp = head;
while(temp != NULL){
if(temp->data == key)
return true;
temp = temp->next;
}
return false;
}
βοΈ 10. Perbandingan Linked List vs Array
π Tabel Perbandingan
| Aspek | Array | Linked List |
|---|---|---|
| Ukuran | Tetap | Dinamis |
| Akses | Cepat (O(1)) | Lambat (O(n)) |
| Insert/Delete | Lambat | Cepat |
| Memori | Kontigu | Tidak kontigu |
π§ Narasi
- Array β cocok untuk akses cepat
- Linked List β cocok untuk perubahan data sering
π§ 11. Kelebihan dan Kekurangan
π Tabel
| Kelebihan | Kekurangan |
|---|---|
| Dinamis | Akses lambat |
| Mudah insert/delete | Pointer kompleks |
| Hemat untuk perubahan data | Overhead pointer |
π§ͺ 12. Studi Kasus Nyata
π Sistem Playlist Musik
- Lagu ditambah/hapus sering
- Urutan fleksibel
β‘οΈ Linked list sangat cocok
π» 13. Implementasi Lengkap Singly Linked List
#include <iostream>
using namespace std;struct Node {
int data;
Node* next;
};void insert(Node*& head, int value){
Node* newNode = new Node();
newNode->data = value;
newNode->next = head;
head = newNode;
}void display(Node* head){
Node* temp = head;
while(temp != NULL){
cout << temp->data << " -> ";
temp = temp->next;
}
cout << "NULL" << endl;
}int main(){
Node* head = NULL; insert(head, 10);
insert(head, 20);
insert(head, 30); display(head);
}
π 14. Ringkasan Materi
- Linked list adalah struktur data berbasis pointer
- Terdiri dari node (data + pointer)
- Jenis: singly, doubly, circular
- Operasi utama: insert, delete, search, traversal
- Lebih fleksibel dibanding array
π 15. Latihan / Diskusi
βοΈ Soal Teori
- Jelaskan pengertian linked list
- Apa perbedaan array dan linked list?
- Apa kelebihan doubly linked list?
π» Soal Praktikum
- Implementasikan singly linked list
- Tambahkan fungsi delete node
- Buat fungsi search data
π― Penutup
Linked list adalah struktur data penting yang menjadi dasar banyak struktur lanjutan seperti stack, queue, tree, dan graph.
β‘οΈ Menguasai linked list = memahami dasar struktur data dinamis