Linked List


🧭 1. Pengertian Linked List

https://images.openai.com/static-rsc-4/OasISEmkMDNxPEUig3BQBchKjkuQEZcGwkq6EG_a2RJ4Ruo07PpMDaqU3TUrwoQdkFlk1SPfc1rCM2MnAZsGpD8ZEh8aHbEDNR_7CeQxMVcaonW4G7_LHsxV9lNjRhr5BxoR3XsfvGSvO8fsrs-k6cc8aa1za3unzKRPCtJK921r1DcpPD7NA9l9oRS778xC?purpose=fullsize
https://images.openai.com/static-rsc-4/bHeEsvnrFBb85E6sJxzyGAgURA6iUamlmKMX1c-att_svWm79p180qwKXXkbnCHxkQTr39hqALj0rpS3i6OgBMZ_mc2bbCv2THWdMXXZyW1qhJHG099ms6pxtEeyDw4y6LZr6K8sMA2agOA3n5uQ01Wam0hTIJQzYY5gJUm2AySL8THHWDHUBMhifz1yGI5R?purpose=fullsize
https://images.openai.com/static-rsc-4/Nrg6TG3ZTttFeHlKZJDBms6TmUD58ZEEklloiy43zH16Yzle6v_SCrv0_r9BZWJtvWuxdwvONCqzRqpXlBg9UiJdO3S83wGH9dZ75NwYLpQtDU35PCcwPl2woPUUwW1k5lF_eM_DhyW3kI6-9sd5iatn7cW5AYoD0i8W4iVeME7z-pNEXWSZH9kCOsJDerJv?purpose=fullsize

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

KarakteristikPenjelasan
DinamisUkuran bisa berubah
Non-kontiguTidak berurutan di memori
Pointer-basedMenggunakan alamat memori
FleksibelMudah insert/delete

🧠 Narasi

Linked list sangat cocok untuk data yang:

  • Sering berubah ukuran
  • Sering terjadi insert/delete

🧱 3. Struktur Node

https://images.openai.com/static-rsc-4/IjuWYlMgIQVxvwfeCFxvx0yrc_7zuN7F0BUd1jVGosAUxlif_ApEaWWMvgZf8LQN9fhAo9cV-MpKEFfzgKeTa6cWnonvp31PPHFCxOhismNpLfQyDRix-RH33SrQzYL1UwgDEYh3PlqUAlAZLuRqFcvPyaqCGehAFErE_yeIh-xs3CoNjRMqKXk1oAcWgFne?purpose=fullsize
https://images.openai.com/static-rsc-4/w8ZtPSjsGWQXAIU_2DJYsHtjVJJBJIOZq4umLE37gq6UjwNNifQ504H1CroKBX63O_ykCZuN2syIDIjtQWFBeSBL0dEY-LKY7GgZSVaYQnxdUm8G5TqDlxUpcEek3_zU0e8TW3K5ORmesymw1duaz7LrK351_AHSeZQEMPJtn5AcMznu0CwUpenbh1ESah9C?purpose=fullsize
https://images.openai.com/static-rsc-4/bHeEsvnrFBb85E6sJxzyGAgURA6iUamlmKMX1c-att_svWm79p180qwKXXkbnCHxkQTr39hqALj0rpS3i6OgBMZ_mc2bbCv2THWdMXXZyW1qhJHG099ms6pxtEeyDw4y6LZr6K8sMA2agOA3n5uQ01Wam0hTIJQzYY5gJUm2AySL8THHWDHUBMhifz1yGI5R?purpose=fullsize

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

https://images.openai.com/static-rsc-4/KvcPdr59LPMAXY6OKSQO9rNINM-aVt4-kwFievzG9-ICt06xtyPIzf-w8jc_rFpQwgPcHV1ZOr-TxSimaulANDur6xdAGomoOQy2jq9c1uyJBT2PetM9B54W0wx5TMDr8kIJ6q7PW-ZxrVPvFM9yWy0walzl-m3Q6GJ6e83ebwoTICMhRyfvJfSVGmxTqwZe?purpose=fullsize
https://images.openai.com/static-rsc-4/soS_yYMYkRK6_dDXN2Nm08O_j2C73QkfxkolMU_eaRtsL8h4VP3n_vKZ1dNgi5AJjrPhKy0O47FrtNqaw39SFhbVkQqMwyjoeqAJBBjW3-VuoUMIebYGMVCAqSDKPfIRIH8EZUyGicoJ1Enn9AQ8zTOzGqXfaxEjw6aHoMlVHhBNejXQne7vyUMbhxZxDZ16?purpose=fullsize
https://images.openai.com/static-rsc-4/28gk26RUXWlO2zPrUeWP79AkpZO7f1R_N3Ylb8pR_0uqWvxbSrd8b56lWUxPlgtYpS5R1UANRaJM7KT0N6BG_9GEoJwYntOPqX-pUddkBhwn0xGBtUVcjtvbTGPBwIIRsn3Sntj0uaj3KLrx3A5RVxPD5iZjFFSMoyqDErkyvLo1gr6N9JJkrT3eQET6P6KW?purpose=fullsize

6

πŸ“– Konsep

Setiap node hanya memiliki 1 pointer (next).

🧠 Narasi

Seperti jalan satu arah:

  • Bisa maju
  • Tidak bisa mundur

πŸ”Ή B. Doubly Linked List

https://images.openai.com/static-rsc-4/soS_yYMYkRK6_dDXN2Nm08O_j2C73QkfxkolMU_eaRtsL8h4VP3n_vKZ1dNgi5AJjrPhKy0O47FrtNqaw39SFhbVkQqMwyjoeqAJBBjW3-VuoUMIebYGMVCAqSDKPfIRIH8EZUyGicoJ1Enn9AQ8zTOzGqXfaxEjw6aHoMlVHhBNejXQne7vyUMbhxZxDZ16?purpose=fullsize
https://images.openai.com/static-rsc-4/Yv0dS_ihJhqNZUrsehS495_ziNb4bBa-oM6CDxJh0rFXg42hK6IvJRwC17ksuYhLh-mdCQzonFy14X3LBxlPeblUC4416vLLAQbcDBTfvvoyrx8Dq7BVrtrjJAZw5SWi8OKOKF9qYyOqy5laP52RMGRxuPPWfP7wRDZcZjMLOoqRim7kqaxZG3S1iqRaLg6y?purpose=fullsize
https://images.openai.com/static-rsc-4/9bhTWFTH1m4YlmfIuBYzR9n0wNYDAnMuQWZXS2eEi9kC-F0LfCpEn8RtENh6anajrP2ZJwn2-WGB6kazMOgAI8HaanbLwZLRJoHj2H8FmsjxDDzr6H8Vd0ML_T_fQwnJSTCvE3EPNfWw7h4ad69048mMNczLpR84Tw1Dj99RmGE_s9gjQsSqsx9KF1ZcByDR?purpose=fullsize

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

https://images.openai.com/static-rsc-4/NEL2j7nsNu0p-YQuS2dZwI_1qCK77ary7X3ssFCuLKfdq1To-WFZoWReOk6rftzAbdYcnMbS6N7zV75TP7KyMYWIg98Gv4UbJ0JXH3SM90pNSqIqKGJrhkIGkzDzWQeLQ90Zudc0n6ekJZ0SW5Xahr1kdY2bN-_jaraF4eqeauCA6edt7VcYoTVTnuema2pM?purpose=fullsize
https://images.openai.com/static-rsc-4/4k6xHr5xN9Cl6M8ui9btgNX2KjTgRGEe4e6Q4hZ8bfT05_JfuwIm2x_7IXc5oOEASgUmb9_PvcaQqpbVFqwsb6X97Rw-eDtTv_YeAHIs6OapyzzVK3mVDMWMJ3wcExPFeYPMdr5t0b-CV1iyBvQOXlz-aN_QTSG6hsYJG4P6qz4nA-YKjwqERoVdscEpalU0?purpose=fullsize
https://images.openai.com/static-rsc-4/yr2ctV4e-Sv0mDhTampE6k0Zf1JsWcWVoBLgAB8AcbtlgAtRgna_hARme_yhZAB-wCwSzx6WGV9XgjjdDbYm5XoJuFk_1UBBfJaaFZV1jd2yoH_Z18XMWnBPQTnQszzDj8xMYg99VcmemzeM_EiEV1kPpjD4ySyj2MOy_iuhHAjQVGakGAqUSehHU-Z5loLX?purpose=fullsize

6

πŸ“– Konsep

Node terakhir menunjuk kembali ke node pertama.

🧠 Narasi

Seperti lingkaran:

  • Tidak ada akhir
  • Berputar terus

βš™οΈ 5. Operasi Linked List

πŸ“Š Tabel Operasi

OperasiDeskripsi
InsertionMenambah node
DeletionMenghapus node
TraversalMenelusuri node
SearchingMencari data

βž• 6. Insertion (Penyisipan)

https://images.openai.com/static-rsc-4/eAMhKLq85HBlFMyp7Z--99-NW1TiNfy-9tqNgfbudR2fnZ0j4NkzH6PJDSUNkCeojqOTg0xosoDYn8KHkDk7wz1tT8uxVLo7OuqnyPVtumg8Zvg1Lyl5HM5RdC9hIOT7oDB3aEHG0EboB7yg5eYkMO39fvsOGe9vwgBeIsfyaGdBiSgBM7yne1p6Af2_uI1w?purpose=fullsize
https://images.openai.com/static-rsc-4/mm1nYqAyQcDExRg2a8BC6TRhZrW2IivAWJJwdzgQX0N0Y1UnWQ4VHSusxnFBGJ7sBPQS4__oZH3p1GH-3eJ4C3foDxrYFv44l8jracBj0qaw-0ArxM8tgAE6IBW_JHOQFpIT0wXXzJRKLf4c-oOihBCges0G7cAnvbNd4Ghg6u6RhpX9uSfOwSJ5lXRw0ZVn?purpose=fullsize
https://images.openai.com/static-rsc-4/vLG4siZzwnq5mm-Ze7rmyiacJVN42I6-_cOla9fJme6PQvqSJh7_0uWjrdifLXDSEapS1e23n9KPUhV_1IV8gyZeLRnoJJD5Lg2dqL-5HRD2tWYnGrP-C0CryAxyUwI2z9Bejl3mgN_gF_97znPr1kRw2TRGQ5crj0EU9fdehEtP0zIN0DUfKEuXeqdJQtYL?purpose=fullsize

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)

https://images.openai.com/static-rsc-4/dIjLhnZQhnQzdA7MW0HeJ9Nt9eJ7oLjHTQqkMRFo0OH8ZA7UAJgBmI2_NvwvkFLdC7QhmtS2_rjw47EkbOwML4rx16BAM-wMEaR6TJJokkuNlyKPF5bhXS6M1U9SVK2NoXPL9nKZcrFmkM1rCPMuC22R5M8IZKiXxr0zddTSF-PX1wMEGV9MFEjBTf9aUS9e?purpose=fullsize
https://images.openai.com/static-rsc-4/rB4cjcE4H4tF9rUeGdL51OBUyDZkjV64OeApz4uvFTFfTVSxgbmQD92C_y1oXSH6YDjL6u8e3MUeFpyqp97I0QwEIfMWFByh9fn3466i0fYysCfN_pTwPoEYrqonfsCOZqErZtVHEHjAFw6f3omaaXhmCDPW29qUUjRAC1jKjC07Q9qgAhv6b8bWMF18reGU?purpose=fullsize
https://images.openai.com/static-rsc-4/Ckb8t_KTOGyyOVL_UmSXhRNDwrAn3K_3Er5U6K0aB7tJKnBeRFzEvmP-XVu4I57wsLEivSkpL9GWSzRDJi-D5EF10fUq8tl9dmHq324OcxbvwljAxw62W_Se9lx9-wiQPqIFOOYYKQD851DYAYiQHidfwb6XO9pK8ZMWirrzLNahjuQffRkUcjAZA43N8f2Q?purpose=fullsize

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

https://images.openai.com/static-rsc-4/Ef1rYZxfVT0VgwC8YRuwFTzxGKU9KYJKazPLwVozG7HLRsq3uNQJg_bZAvYyu8dHjZ43hFzj1_3psGVkn0nVA-nFiBfxIcqZstXIxfjJ6e8rU8btNQuHrV0w0hYDwkhbbwc-IQNjG42JXm_Z-2q22u8H1Ju41KJpNlLhjq83PmzkMRQauB6Wxe_h9uWZfVD9?purpose=fullsize
https://images.openai.com/static-rsc-4/CD2qq0Ckls007Ui6pm3STdtx6MhueIJgwcHYmxa9h__wlN51Ofb-nyIU29s1JWawEk6zlKGwXwscbB8W-USdozdfvybLdky6jx4Khh3cgYzEoYaKmdGXHTjAa2QYpBvOWA6dPZEWH3RKHvuE83KJ7mWI50MAyFOEMrxClIG7Tpcx5ZgR-5MluVs7hgAb1MpM?purpose=fullsize
https://images.openai.com/static-rsc-4/yKWao6yhUYFWBZwhhAhSKmY22QCR9NvnC8f9bKgD-KcDcFE_PFEj2oKMlvPgVhLHhVNkc2OU9dkjF6miqwXx_r4gHvUN6nHTK8YiE9l3Zgi399fVetxeUltGUcursNSwXIS31QA-qLDrgqHtySXYRU5V0RQEbkdqFzFbcZDn3X6CEpy2yfuhFtuHd-IWzqRN?purpose=fullsize

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

AspekArrayLinked List
UkuranTetapDinamis
AksesCepat (O(1))Lambat (O(n))
Insert/DeleteLambatCepat
MemoriKontiguTidak kontigu

🧠 Narasi

  • Array β†’ cocok untuk akses cepat
  • Linked List β†’ cocok untuk perubahan data sering

🧠 11. Kelebihan dan Kekurangan

πŸ“Š Tabel

KelebihanKekurangan
DinamisAkses lambat
Mudah insert/deletePointer kompleks
Hemat untuk perubahan dataOverhead 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

  1. Jelaskan pengertian linked list
  2. Apa perbedaan array dan linked list?
  3. Apa kelebihan doubly linked list?

πŸ’» Soal Praktikum

  1. Implementasikan singly linked list
  2. Tambahkan fungsi delete node
  3. 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