420 likes | 616 Views
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.
E N D
Link List FARID WAJDI YUSUF
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
Link List • List merupakansebuahpemikiran/konsepstruktur data yang sangatdasarpadapemrograman agar lebihfleksibel. • Setiapelemenakanditambahkansaatdibutuhkan, tidakdialokasikandengantempattertentudariawal. • Ilustrasi : • Secaralogika, kepalaatau first adalahpengaitataupenunjukawalelemenpertamadarisebuah list. kepala null
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.
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.
Link List • Ilustrasi Link List, sebagaiberikut : NEXT ELEMEN NODE A B C
Link List • Misalnyakitainginmembuatsebuahelemen data nilaimahasiswa yang terdiridari NRP, nama, dannilai, makarepresentasinyaadalahsebagaiberikut: NIM Nama Nilai next 021 Serdi A Penunjukkeelemenberikutnya
Link List • Bilaelemensepertidiatasdibuatdalambahasaalgoritma, sepertiberikut: • type nilaiMatKul : < • NRP : string, • nama : string, • nilai : string, • > • Elemenditambahdenganpengait/penunjuk: • type elemen : < • elmt : nilaiMatKul, • next : elemen • >
Link List • Deklarasilistnyasebagaiberikut: • type list : < • first : elemen • >
Link List • Penunjukelemen di awalini (first) digunakanuntukmemegangelemenawalsebuah list agar dapatdiaksessatu per satusampaielementerakhir list. • Sebuahstruktur data yang dianggapsebagai list memilikiaturanpengaksesan. • Pengaksesandilakukandaripenunjukelemenpertama (first) kemudianberjalanmajukeelemenkedua, ketigadanseterusnyasampaielementerakhir.
Keuntungan Link List • Penggunaanmemori yang dinamik. • Kita dapatmengaturpenggunaanmemorisehinggabisalebihhemat. • Kesederhaanpada proses insert dan delete elemen. • Alamatelemenpertamadarisuatu list, dapatdiacuoleh First(L). • Nilaiyang dibawanyadapatdiacudengan info(P)
10 15 20 10 15 20 head head prev next Jenis List • Single Linked List • dapatjugaditulis NULL • Double Linked List
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.
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.
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
MEMBUAT ELEMEN LINKED LIST • Membuatsuatuelemen linked list berartimemesantempat di memoriuntukmenyimpansebuah list.
Menghapuselemen list berartimenghilangkanataumenghancurkanalokasimemorisebuah list yang telahada di memori. • Fungsi: agar data yang tidakdiperlukanbenar-benarterhapus di memorisehinggapenggunaanmemoridapatoptimal karena data-data yang tidakdiperlukandihilangkan.
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.
Kondisi Linked List SedangKosong • Ketikalinked list masihkosong, maka variable awaldanakhirakandiisidengan variable baru.
10 head head 1. List masihkosong (head=NULL) NULL 2. Masukkan data baru, misal 10
Kondisi Linked List SudahMempunyaiElemen. • Proses penambahannyaadalahdenganmengisikanfield next milikelemenbarudenganposisiawal linked list, kemudianposisiawalberubahkeposisibaru.
10 15 15 10 15 10 head baru head head baru Masukkandata barudaridepan, misal 15
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.
10 15 10 15 10 15 bantu head head baru head baru Masukkandata barudaribelakang, misal 15
21 21 15 21 10 15 10 10 15 bantu head baru baru head head Masukkandata barudaribelakang, misal 21
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!.
Contoh: Langkah-langkahpenelusuranadalah : • Isi variable p denganawal. • Selamap tidak NULL, makatampilkan info yang ada di elemen yang ditunjukvariable p, kemudian p dipindahkankeelemenberikutnya.
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.
Kondisilinked list masihkosong • Padakondisiini proses penghapusantidakbisadilakukan. • Kondisilinked list hanyamemiliki 1 data • Langkah yang dilakukanadalahmenghapus data yang ada di posisiawalkemudianakhirdanawal di-NULL-kan.
Kondisi linked list memiliki data lebih dari 1 data: • Alamatdata awaldiisikankesuatuvariabelpembantu (phapus). • Setelahitupindahkanawalke data berikutnya. • Setelahituhapus/hancurkan data di posisiphapus.
21 21 10 15 15 head head Proses penghapusan data 10 daridepan
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).
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.
10 15 15 10 34 10 15 34 21 21 21 head bantu hapus head head bantu bantu Proses menghapus data 34 dari belakang
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.
10 15 20 head tail • Dibutuhkanduabuahvariabel pointer: headdantail • Head akanselalumenunjukpada node pertama, sedangkan tail akanselalumenunjukpada node terakhir.
Java tidakmemiliki pointer namunmemiliki reference. • Reference adalahpenunjukkeobjek (fungsinyasamaseperti pointer)
CONTOH: • Contohpenggunaan reference: Data a = new Data(); Data b = a; /* b menunjukke a*/ • Jika b di ubah, maka a jugaakanberubah
ELEMEN LIST • Pada java, elemen list didefinisikandengankelas. Jadielemen list adalahkelas. • Suatukelasbolehmereferdirinyasendiri. • Contoh: class ListElement { String info; ListElement next; }