1 / 31

LINKED LIST

LINKED LIST. Single Linked List. Linked List. Dikembangkan tahun 1955-1956 oleh Allen Newell, Cliff Shaw dan Herbert Simon di RAND Corporation sebagai struktur data utama untuk bahasa Information Processing Language (IPL). IPL dibuat untuk mengembangkan program artificial intelligence

adie
Download Presentation

LINKED LIST

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. LINKED LIST Single Linked List

  2. Linked List • Dikembangkan tahun 1955-1956 oleh Allen Newell, Cliff Shaw dan Herbert Simon di RAND Corporation sebagai struktur data utama untuk bahasa Information Processing Language (IPL). IPL dibuat untuk mengembangkan program artificial intelligence • Linked List adalah salah satu bentuk struktur data, berisi kumpulan data (node) yang tersusun secara sekuensial, saling sambung-menyambung dan dinamis.

  3. Linked List • Linked List saling terhubung dengan bantuan variabel pointer • Masing-masing data dalam Linked List disebut dengan node (simpul) yang menempati alokasi memori secara dinamis dan biasanya berupa struct yang terdiri dari beberapa field.

  4. Array VS Linked List • ARRAY : • Statis • Terbatasdalammenambah / menghapus data • Random access • Penghapusan data tidakmungkin • LINKED LIST : • Dinamis • Tidakterbatasdalammenambah / menghapus data • Sequential access • Penghapusan data mudah

  5. 10 15 20 10 15 20 head head prev next Jenis link list • Single Linked List dapatjugaditulisNULL • Double Linked List

  6. 10 10 15 20 data pointer NULL Single Linked List Pengertian: • Single : artinya field pointer-nya hanya satu buah saja dan satu arah serta pada akhir node, pointernya menunjuk NULL • Linked List : artinya node-node tersebut saling terhubung satu sama lain.

  7. 15 20 10 data pointer Single Linked List NULL • Setiapnode pada linked list mempunyai field yang berisipointerke node berikutnya, danjugamemiliki field yang berisidata. • Node terakhirakanmenunjukkeNULL yang akandigunakansebagaikondisiberhentipadasaatpembacaanisi linked list.

  8. 10 15 20 10 15 20 head head tail Jenis Single Linked List • Single linked list dengan HEAD • Single linked list dengan HEAD dan TAIL

  9. Deklarasi Single Linked List Deklarasi Node typedefstructTNode { int data; TNode *next; }; Penjelasan: • PembuatanstructbernamaTNode yang berisi 2 field, yaitu field data bertipe integer dan field next yang bertipe pointer dariTNode • Setelahpembuatanstruct, buatvariabelhaed yang bertipe pointer dariTNode yang bergunasebagaikepala linked list.

  10. Pembuatan Single Linked List • Keyword new gunanyauntukmempersiapkansebuah node barubersertaalokasimemorinya, kemudian node tersebutdiisi data dan pointer nextnyaditunjukke NULL. TNode *baru; baru = new TNode; baru->data = databaru; baru->next = NULL;

  11. 10 15 20 head Single Linked List menggunakan HEAD • Dibutuhkansatubuahvariabel pointer: head • Head akanselalumenunjukpadanode pertama

  12. head Single Linked List menggunakanHEAD FungsiInisialisasi Single LinkedList void init() { head = NULL; } Function untukmengetahuikosongtidaknya Single LinkedListdanjika pointer head tidakmenunjukpadasuatu node makakosong intisEmpty() { if(head == NULL) return 1; else return 0; } NULL

  13. Single Linked List menggunakanHEAD Deklarasi Pointer PenunjukKepala Single Linked List Manipulasi linked list tidakbisadilakukanlangsungke node yang dituju, melainkanharusmenggunakansuatu pointer penunjukke node pertamadalam linked list (dalamhaliniadalah head). Deklarasinyasebagaiberikut: TNode *head;

  14. Single Linked List dengan Head (Penambahan data daridepan) Padaprinsipnyaadalahmengkaitkan node barudengan head, kemudian head akanmenunjukpada data barutersebutsehingga head akantetapselalumenjadi data terdepan.

  15. 10 head head Single Linked List dengan Head (Penambahan data daridepan) 1. List masih kosong (head=NULL) NULL 2. Masukkan data baru, misal 10

  16. 10 15 15 10 15 10 head baru head head baru Single Linked List dengan Head (Penambahan data daridepan) 3. Masukkan data baru lagi dari depan, misal 15

  17. Single Linked List dengan Head (Penambahan data daridepan) voidinsertDepan(intdatabaru) { TNode *baru; baru = new TNode; baru->data = databaru; baru->next = NULL; if(isEmpty()==1){ head=baru; head->next = NULL; } else { baru->next = head; head = baru; } cout<<”Data masuk\n”; }

  18. Single Linked List dengan Head (Penambahan data daribelakang) • Penambahandibelakanglebihsulitkarenakitamembutuhkan pointer bantu untukmengetahui node terbelakang, dan untuk mengetahui data terbelakang perlu digunakan perulangan. • Pointer bantu diletakkan di data bagian akhir sebelum penambahan

  19. 10 head head Single Linked List dengan Head (Penambahan data daribelakang) 1. List masih kosong (head=NULL) NULL 2. Masukkan data baru, misal 10

  20. 10 15 10 15 10 15 bantu head head baru head baru Single Linked List dengan Head (Penambahan data daribelakang) 3. Masukkan data baru lagi dari belakang, misal 15

  21. 21 21 10 10 15 15 21 15 10 bantu head baru head baru head Single Linked List dengan Head (Penambahan data daribelakang) 3. Masukkan data baru lagi dari belakang, misal 21

  22. Single Linked List dengan Head (Penambahan data daribelakang) void insertBelakang (int databaru){ TNode *baru,*bantu; baru = new TNode; baru->data = databaru; baru->next = NULL; if(isEmpty()==1){ head=baru; head->next = NULL; } else { bantu=head; while(bantu->next!=NULL){ bantu=bantu->next; } bantu->next = baru; } cout<<"Data masuk\n"; }

  23. 21 10 15 head bantu Single Linked List dengan Head (menampilkan data) voidtampil(){ TNode *bantu; bantu = head; if(isEmpty()==0){ while(bantu!=NULL){ cout<<bantu->data<<" "; bantu=bantu->next; } cout<<endl; } else cout<<"Masihkosong\n"; }

  24. Single Linked List dengan Head (menampilkan data) • Function diatasdigunakanuntukmenampilkansemuaisi list, dimana linked list ditelusurisatu-persatudariawal node sampaiakhir node. Penelusuraninidilakukandenganmenggunakansuatupointer bantu, karenapadaprinsipnya pointer head yang menjaditandaawal list tidakbolehberubah/bergantiposisi. • Penelusurandilakukanterussampai node terakhirditemukanmenunjukkenilai NULL. Jikatidak NULL, maka node bantu akanberpindahke node selanjutnyadanmembacaisidatanyadenganmenggunakan field next sehinggadapatsalingberkait. • Jika head masih NULL berarti data masihkosong!

  25. 21 21 10 15 15 head head Single Linked List dengan Head (menghapus data daridepan) Proses penghapusan data 10 dari depan

  26. Single Linked List dengan Head (menghapus data daridepan) voidhapusDepan (){ TNode *hapus; int d; if (isEmpty()==0){ if(head->next != NULL){ hapus = head; d = hapus->data; head = head->next; delete hapus; } else { d = head->data; head = NULL; } cout<<d<<" terhapus\n"; } else cout<<"Masihkosong\n"; }

  27. Single Linked List dengan Head (menghapus data daridepan) • Function diatasakanmenghapus data terdepan (pertama) yang ditunjukoleh head pada linked list • Penghapusan node tidakbolehdilakukanjikakeadaan node sedangditunjukoleh pointer. • Sebelum data terdepandihapus, head harusditunjukkanke node sesudahnyaterlebihdahulu agar list tidakputus, sehingga node setelah head lama akanmenjadi head baru (data terdepan yang baru). • Jika head masih NULL makaberarti data masihkosong!

  28. 10 15 15 34 10 15 34 10 21 21 21 head head bantu bantu head hapus Single Linked List dengan Head (menghapus data daribelakang) Proses menghapus data 34 dari belakang

  29. Single Linked List dengan Head (menghapus data daribelakang) voidhapusBelakang(){ TNode *hapus,*bantu; int d; if (isEmpty()==0){ if(head->next != NULL){ bantu = head; while(bantu->next->next!=NULL){ bantu = bantu->next; } hapus = bantu->next; d = hapus->data; bantu->next = NULL; delete hapus; } else { d = head->data; head = NULL; } cout<<d<<" terhapus\n"; } else cout<<"Masihkosong\n"; }

  30. Single Linked List dengan Head (menghapus data daribelakang) • Membutuhkan pointer bantudanhapus. • Pointer hapusdigunakanuntukmenunjuk node yang akandihapus, dan pointer bantu digunakanuntukmenunjuk node sebelum node yang dihapus yang kemudianselanjutnyaakanmenjadi node terakhir. • Pointer bantu akan digunakan untuk menunjuk ke nilai NULL. • Pointer bantu akan selalu bergerak sampai sebelum node yang akan dihapus, baru kemudian pointer hapus diletakkan setelah pointer bantu. Setelahitu pointer hapusakandihapus, pointe bantu akanmenunjukke NULL.

  31. Function untukmenghapussemuaelemen Linked List void clear(){ TNode *bantu,*hapus; bantu = head; while(bantu!=NULL){ hapus = bantu; bantu = bantu->next; delete hapus; } head = NULL; }

More Related