1 / 41

Link List

Link List. FARID WAJDI YUSUF. Sejarah. 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.

ophrah
Download Presentation

Link 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. Link List FARID WAJDI YUSUF

  2. Sejarah • Dikembangkan tahun 1955-1956 oleh Allen Newell, Cliff Shaw dan Herbert Simon di RAND Corporation sebagaistruktur data utamauntukbahasa Information Processing Language (IPL). • IPL dibuatuntukmengembangkan program artificial intelligence

  3. Link List • List merupakansebuahpemikiran/konsepstruktur data yang sangatdasarpadapemrograman agar lebihfleksibel. • Setiapelemenakanditambahkansaatdibutuhkan, tidakdialokasikandengantempattertentudariawal. • Ilustrasi : • Secaralogika, kepalaatau first adalahpengaitataupenunjukawalelemenpertamadarisebuah list. kepala null

  4. Link List • Merupakansekumpulanelemen list yang bertipesama. • Elemen list mempunyaiketerurutantertentu, nilaisatuelemenbolehmuncullebihdarisatu kali. • Setiapelemenmempunyai 2 bagian: • Informasielemen • Alamatsuksesornya • Linked List adalah salah satu bentuk struktur data, berisi kumpulan data (node) yang tersusun secara sekuensial, saling sambung-menyambung dan dinamis. • Linked List saling terhubung dengan bantuan variabel pointer. • Masing-masing data dalam Linked List disebut dengan node (simpul) yang menempati alokasi memori secara dinamis.

  5. Link List • Setiap node terdiriatasduabagian. Bagianpertamaberisiinformasi data tersebut, • Bagiankeduamerupakan field, link, ataunextpointer. Link inilah yang menghubungkansatuelemen data keelemen data lainnya, sehinggaurutanelemen data tersebutmembentuksuatu linear list. • Field link iniberisialamatdarisimpulberikutnyadalam list. • Field link bernilai0 bila link tersebuttidakmenudingke data (simpul) lainnya. • Penudinginidisebutpenuding nol.

  6. Link List • Ilustrasi Link List, sebagaiberikut : NEXT ELEMEN NODE A B C

  7. Link List • Misalnyakitainginmembuatsebuahelemen data nilaimahasiswa yang terdiridari NRP, nama, dannilai, makarepresentasinyaadalahsebagaiberikut: NIM Nama Nilai next 021 Serdi A Penunjukkeelemenberikutnya

  8. Link List • Bilaelemensepertidiatasdibuatdalambahasaalgoritma, sepertiberikut: • type nilaiMatKul : < • NRP : string, • nama : string, • nilai : string, • > • Elemenditambahdenganpengait/penunjuk: • type elemen : < • elmt : nilaiMatKul, • next : elemen • >

  9. Link List • Deklarasilistnyasebagaiberikut: • type list : < • first : elemen • >

  10. Link List • Penunjukelemen di awalini (first) digunakanuntukmemegangelemenawalsebuah list agar dapatdiaksessatu per satusampaielementerakhir list. • Sebuahstruktur data yang dianggapsebagai list memilikiaturanpengaksesan. • Pengaksesandilakukandaripenunjukelemenpertama (first) kemudianberjalanmajukeelemenkedua, ketigadanseterusnyasampaielementerakhir.

  11. Keuntungan Link List • Penggunaanmemori yang dinamik. • Kita dapatmengaturpenggunaanmemorisehinggabisalebihhemat. • Kesederhaanpada proses insert dan delete elemen. • Alamatelemenpertamadarisuatu list, dapatdiacuoleh First(L). • Nilaiyang dibawanyadapatdiacudengan info(P)

  12. 10 15 20 10 15 20 head head prev next Jenis List • Single Linked List • dapatjugaditulis NULL • Double Linked List

  13. 10 10 15 20 data pointer NULL 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.

  14. 15 20 10 data pointer NULL • Setiap node pada linked list mempunyai field yang berisi pointer ke node berikutnya, danjugamemiliki field yang berisi data. • Node terakhirakanmenunjukkeNULL yang akandigunakansebagaikondisiberhentipadasaatpembacaanisi linked list.

  15. 10 15 20 10 15 20 head head tail JENIS SINGLE LINK LIST Single Link List dengan Head Single Link List dengan Head dan Tail

  16. BEBERAPA OPERASI PADA LIST

  17. MEMBUAT ELEMEN LINKED LIST • Membuatsuatuelemen linked list berartimemesantempat di memoriuntukmenyimpansebuah list.

  18. Menghapuselemen list berartimenghilangkanataumenghancurkanalokasimemorisebuah list yang telahada di memori. • Fungsi: agar data yang tidakdiperlukanbenar-benarterhapus di memorisehinggapenggunaanmemoridapatoptimal karena data-data yang tidakdiperlukandihilangkan.

  19. PENAMBAHAN ELEMEN DI POSISI AWAL • Penambahanelemen di posisiawaladalahmenambahkan data barupadaposisiawal, sehingga data barutersebutakanmenjadiawal. • Ada 2 hal yang harusdiperhatikan, yaitu : • kondisi linked list sedangkosong, atau • kondisilinked list sudahmempunyaielemen.

  20. Kondisi Linked List SedangKosong • Ketikalinked list masihkosong, maka variable awaldanakhirakandiisidengan variable baru.

  21. 10 head head 1. List masihkosong (head=NULL) NULL 2. Masukkan data baru, misal 10

  22. Kondisi Linked List SudahMempunyaiElemen. • Proses penambahannyaadalahdenganmengisikanfield next milikelemenbarudenganposisiawal linked list, kemudianposisiawalberubahkeposisibaru.

  23. 10 15 15 10 15 10 head baru head head baru Masukkandata barudaridepan, misal 15

  24. PenambahanElemen Di PosisiTerakhir • Penambahan di posisiakhiradalah proses penambahan data barudimana data barudisimpan di posisiterakhir. • Setelahproses penambahanselesai, makavariable akhirakanmenunjukke data barutersebut. • Ada 2 halyang harusdiperhatikanyaitu : • Kondisipenambahanakhirpada linked list yang masihkosongdan • Kondisipenambahanakhirpada linked list yang sudahmempunyaielemen.

  25. 10 15 10 15 10 15 bantu head head baru head baru Masukkandata barudaribelakang, misal 15

  26. 21 21 15 21 10 15 10 10 15 bantu head baru baru head head Masukkandata barudaribelakang, misal 21

  27. MENAMPILKAN SINGLE LINKED LIST DENGAN HEAD • 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!.

  28. Contoh: Langkah-langkahpenelusuranadalah : • ƒIsi variable p denganawal. • ƒSelamap tidak NULL, makatampilkan info yang ada di elemen yang ditunjukvariable p, kemudian p dipindahkankeelemenberikutnya.

  29. PENGHAPUSAN DATA AWAL • Penghapusan data di awaladalah proses menghapuselemenpertama (awal), sehinggavariable awalakanberpindahkeelemen data berikutnya. • Ada 3 kondisiyang perludiperhatikanyaitu: • kondisilinked list masihkosong • kondisilinked list hanyamemiliki 1 data, dan • kondisilinked list yang memiliki data lebihdari 1 elemen.

  30. Kondisilinked list masihkosong • Padakondisiini proses penghapusantidakbisadilakukan. • Kondisilinked list hanyamemiliki 1 data • Langkah yang dilakukanadalahmenghapus data yang ada di posisiawalkemudianakhirdanawal di-NULL-kan.

  31. Kondisi linked list memiliki data lebih dari 1 data: • Alamatdata awaldiisikankesuatuvariabelpembantu (phapus). • Setelahitupindahkanawalke data berikutnya. • Setelahituhapus/hancurkan data di posisiphapus.

  32. 21 21 10 15 15 head head Proses penghapusan data 10 daridepan

  33. Penghapusannode 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).

  34. PENGHAPUSAN DATA AKHIR • Penghapusan data akhiradalah proses menghilangkan/menghapus data yang adadi posisiterakhir. • Ada 3 kondisi yang harusdiperhatikanketikaakanmelakukanproses penghapusan data akhiryaitu: • Kondisilinked list masihkosong, • Kondisi linked list hanyaberisi 1 data, dan • Kondisilinked list berisi data lebihdari 1 buah.

  35. 10 15 15 10 34 10 15 34 21 21 21 head bantu hapus head head bantu bantu Proses menghapus data 34 dari belakang

  36. MENGHAPUS DATA DARI BELAKANG • Membutuhkan pointer bantu danhapus. • 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.

  37. 10 15 20 head tail • Dibutuhkanduabuahvariabel pointer: headdantail • Head akanselalumenunjukpada node pertama, sedangkan tail akanselalumenunjukpada node terakhir.

  38. IMPLEMENTASI LIST MENGGUNAKAN JAVA

  39. Java tidakmemiliki pointer namunmemiliki reference. • Reference adalahpenunjukkeobjek (fungsinyasamaseperti pointer)

  40. CONTOH: • Contohpenggunaan reference: Data a = new Data(); Data b = a; /* b menunjukke a*/ • Jika b di ubah, maka a jugaakanberubah

  41. ELEMEN LIST • Pada java, elemen list didefinisikandengankelas. Jadielemen list adalahkelas. • Suatukelasbolehmereferdirinyasendiri. • Contoh: class ListElement { String info; ListElement next; }

More Related