Pada artikel kali ini, kita akan membahas beberapa hal yang berkaitan dengan struktur data yang bernama linked list.

Selamat membaca dan semoga setiap kalimat yang ada mudah untuk dipahami.

 

Pengertian


Linked list memiliki terjemahan dalam bahasa indonesia yaitu senarai berantai.

Senarai sendiri berarti daftar dan berantai bisa berarti sesuatu hal yang saling terhubung.

Sederhananya, linked list adalah sebuah struktur data linear yang setiap datanya terhubung satu sama lain.

Meskipun linear, struktur data ini memiliki perbedaan yang mencolok jika dibandingan dengan struktur data linear yang lain seperti array atau stack.

Baca juga : Tentang Struktur Data dan Jenisnya – Antek Teknologi

Karena linked list mengalokasikan ruang kosong dari memori komputer secara dinamis atau istilahnya dynamic allocation.

Maksud dari dynamic allocation adalah alokasi memori yang hanya terjadi apabila terdapat data yang baru masuk.

Hal ini berbeda dengan konsep static allocation, kita coba ambil contoh dari array.

Saat kita membuat sebuah array, umumnya kita sudah menentukan ukuran dari array tersebut.

Maka di saat ada data atau tidak, ukuran dari array tersebut tidak akan berubah.

Ibaratnya seperti kita sudah membuat beberapa wadah di awal, kemudian memasukkan sesuatu di dalamnya.

Jadi bisa saja ada wadah yang terisi dan yang tidak terisi.

Hal ini berbeda dengan dynamic allocation karena wadah hanya akan dibuat di saat ada data.

Jika tidak ada data, maka struktur data ini tidak akan melakukan alokasi memori.

 

Istilah Pada Linked List


Sebelum kita membahas bagaimana linked list bekerja, adanya baik untuk memahami beberapa istilah berikut.

a. Node

Node sendiri memiliki nama lain yaitu simpul.

Penggunaan istilah node ditujukan untuk mewakili satuan data di dalam linked list.

Satu buah node atau simpul dapat berisi banyak data, mulai dari data yang dimasukkan pengguna dan data pointer.

b. Pointer

Variabel pointer adalah sebuah variabel yang bisa menyimpan data berupa alamat.

Maka dari itu, variabel ini digunakan untuk seolah-olah menyambungkan setiap simpul yang ada.

Caranya dengan memberitahu program setiap alamat dari simpul yang berada dekat dengan simpul yang ia tinggali.

c. Head

Head adalah sebuah istilah yang diberikan kepada simpul atau node yang berada di paling depan.

d. Tail

Sedangkan tail adalah sebuah istilah yang diberikan kepada simpul atau node yang berada di paling belakang.

 

Cara Kerja


Sekarang kita lanjut membahas tentang bagaimana cara kerja dari linked list.

Kalau menurut penulis sendiri, linked list menggunakan konsep “saling tunjuk”.

Maksudnya adalah tiap simpul yang ada akan selalu menunjuk ke alamat dari simpul yang berada dekat dengannya.

Alamat di sini adalah alamat dari suatu simpul di dalam memori komputer.

Misalkan ada dua buah simpul yang masuk secara beurutan, simpul pertama berisi angka 10 dan simpul kedua dengan 20.

Di saat program menerima angka 10, program akan mengalokasi memori yang nantinya akan bertugas sebagai wadah dari angka 10 tersebut.

Kemudian, wadah ini juga akan menyimpan satu data lagi yang nantinya akan berisikan data berupa pointer.

Baik angka 10 dan data pointer ini akan terbungkus ke dalam satu buah node atau simpul.

Karena simpul saat ini masih berjumlah satu, maka nilai dari pointer di dalam simpul pertama masih NULL atau tidak menunjuk ke alamat tertentu.

1 Node

Kemudian simpul dengan data 20 datang dan program akan kembali mengalokasi memori untuk menjadi simpul yang baru.

Masih sama dengan yang terjadi pada simpul pertama, pointer pada simpul ini masih bernilai NULL.

Jadi sekarang sudah ada dua buah simpul yang tidak belum terhubung dan masing-masing memiliki alamatnya sendiri di memori komputer.

Agar dapat terhubung, kita akan mengubah nilai dari variabel pointer pada simpul yang pertama.

Nilai yang awalnya NULL akan berubah menjadi alamat dari simpul kedua.

Maka sekarang kedua simpul sudah saling terhubung melalui nilai dari pointer simpul pertama.

2 Nodes

Maka dari itu program perlu mengakses simpul pertama dahulu agar dapat mengakses simpul kedua dan seterusnya.

Jadi di saat ada simpul yang baru, maka simpul sebelumnya akan menunjuk ke simpul yang baru datang.

4 Nodes

Sedikit catatan, penunjukkan simpul tidak selamanya dilakukan satu arah saja, dan ini akan kita bahas pada bagian berikutnya.

 

Jenis Linked List


Linked list sendiri terbagi menjadi 3 buah jenis yang berbeda, di antaranya:

a. Single Linked List

Single Linked List

Jenis yang satu ini adalah yang paling sederhana karena hanya menggunakan satu buah pointer saja.

Karena hanya menggunakan satu buah pointer, maka kita hanya bisa mengakses simpul secara satu arah aja.

b. Double Linked List

Double Linked List

Kalau tadi single linked list hanya menggunakan satu buah pointer saja.

Maka sesuai namanya, tipe yang satu ini menggunakan dua buah pointer.

Karena menggunakan dua buah pointer, maka kita bisa mengakses setiap simpul yang ada dalam dua arah.

Bisa ke simpul yang berada di posisi sebelumnya atau yang ada di posisi setelahnya.

c. Circular Linked List

Circular Linked List

Sesuai namanya, circular berarti bundar atau membentuk sebuah lingkaran.

Jenis yang satu ini tidak memiliki akhir karena simpul paling akhir akan menunjuk kembali ke simpul paling pertama.

Jadi pointer di dalam simpul yang menjadi tail akan menunjuk ke simpul yang bertugas menjadi head.

Baik single atau double linked list dapat kita jadikan circular linked list.

 

Rangkuman


Jadi Linked list atau senarai berantai adalah struktur data yang menerapkan dynamic allocation.

Program hanya akan meminta ruang dari memori jika ada data yang memang membutuhkan ruang tersebut.

Di saat sebuah data sudah memiliki tempat, selanjutnya menghubungkan data sebelumnya dengan data yang baru datang.

Cara menghubungkannya sederhana, cukup mengaitkan alamat dari data yang baru datang dengan data di sebelahnya.

Penjelasan tentang linked list pada artikel ini mungkin saja tidak sesuai untuk beberapa bahasa pemrograman tertentu.

Kemudian linked list juga memiliki beberapa jenis tergantung dari jumlah dan arah pointer yang digunakan.

Memang cukup panjang materi yang dibahas, semoga saja setiap ilmunya bisa kalian pahami dengan baik.

Terima kasih dan semoga mudah dimengerti.

Bagikan:

Hans

Saya hanya manusia biasa yang ingin membagi ilmu dengan tulisan.