Halo sobat dira, gimana kabarnya? pasti baik ya, baik kari ini kita akan mempelajari konsep daripada linked list. Disini kita akan mempelajari apa itu Linked List, kemudian kita akan mengetahui jenis-jenis serta operasi pada linked list, dan juga bagaimana cara kerja daripada linked list tersebut.
Linkedlist merupakan sekumpulan node-node yang saling terhubung dengan menggunakan suatu reference / pointer.
Menurut wikipedia Linked List merupakan sebuah struktur data yang digunakan untuk menyimpan sebuah objek data secara terurut, sehingga memungkinkan penambahan,pengurangan,dan pencarian data pada linked list
Linked list memiliki beberapa jenis yaitu :
- Singly Linked list
- Doubly Linked list
- Circular linked list
Selain jenis, adapula operasi-operasi yang bisa dilakukan pada linked list sebagaimana yang telah dijelaskan di dalam pengertian. Operasi-operasi tersebut untuk saat ini kita akan pelajari dua buah operasi yaitu, penyisipan dan juga penghapusan.
Operasi penyisipan terbagi menjadi 3 yaitu:
penyisipan :
- Sisip depan
- Sisip tengah
- Sisip belakang
Operasi penghapusan terbagi menjadi 3 yaitu:
Penghapusan :
- Hapus depan
- Hapus tengah
- Hapus belakang
- Singly Linked List
Linked list menyimpan data-data yang saling terhubung antara satu dengan lainnya sehingga terbentuk Linked list yang abstrak. Setiap elemen ini disebut sebagai node.
Didalam node, terdapat dua buah bagian yang disebut sebagai data dan juga reference / pointer . Dibagian sebelah kiri disebut data dari linked list sedangan bagian sebelah kanan disebut sebagai reference.
Selain itu, di dalam singly linked list ada pula yang dinamakan head dan tail. head selalu mengarah ke node awal dari Linked list dan tail mengarah ke node akhir dari linkedlist.
Pada node tail linkedlist, karena setelahnya tidak ada lagi node maka node tersebut diarahkan ke null. Namun apabila ingin ditambahkan lagi kita bisa memasukan node baru dengan operasi penyisipan baik sisip depan tengah ataupun belakang.
Apabila dalam suatu kasus terdapat Linked list kosong, maka head dan tail nya mengarah ke null.
Mari kita lihat gambar diatas, gambar diatas disebut singly linked list karena, hanya memiliki satu buah reference saja dan bergerak satu arah yaitu dari kiri ke kanan. Berbeda dengan doubly atau circular yang memiliki 2 reference didepan dan juga di belakang.
Lalu bagaimana cara kita mengakses suatu data pada linked list ?
Kita bisa bergerak dari head, kemudian next yaitu node B lalu perintah “.data”, merupakan perintah untuk mengambil data dari node B.
Namun, cara seperti diatas memiliki kekurangan yaitu, jika data pada linked list memiliki data yang besar, maka bisa dibayangkan berapa banyak “.next” yang kita gunakan. Maka dari itu , untuk menghindari kekurangan tersebut kita bisa gunakan iterator.
Dikarenakan proses pengaksesan data pada linked list selalu dimulai dari head, maka iterator nya pun dimulai dari head. Jika kita ingin mengambil data dari B maka kita bisa melakukan iterasi sebanyak 1 kali.
Operasi pada Singly Linked List :
- Sisip depan
Kita bisa melakukan sisip depan apabila memiliki 2 kasus, yaitu apabila linked list dalam keadaan kosong atau linked list sudah memiliki isi.
- Linked list dalam keadaan kosong
Untuk mengisi linked list yang kosong ini kita bisa memasukannya dengan new node.
Karena node di dalam linked list ini hanya satu , maka tail dan head berada di node yang sama. Akan tetapi jika node nya lebih dari 1 , maka tail akan berada di akhir node.
- Linked list memiliki node
Mari kita lihat dari contoh gambar diatas, Kita akan memasukan node C tersebut di depan node D dengan cara reference / pointer nya dari menunjuk ke null, kita buat menjadi menunjuk ke D maka kita buat reference C menunjuk ke D.
Maka kita selesai menyambungkan antara C dan D. Tapi disini belum selesai, kenapa ? karena head nya masih berada di D bukan di C kita perlu memindahkan head nya ke C.
Maka kita perlu membuat head yang tadi nya berada di belakang kita buat ke new node menjadi seperti ini ;
Maka dengan ini operasi penyisipan depan pada linked list selesai, untuk penambahan operasi tengah dan belakang nantikan update dari kami yaa terimakasih see you later :)