Anda di halaman 1dari 28

Konsep LinkedList

LINKED LIST
ALGORITMA & STRUKTUR DATA
Latar belakang perlunya Struktur Data LinkedList

Sebelum memahami konsep linked list, pertama-tama kita melihat


mengapa perlu adanya linked list.
Jika kita ingin menyimpan nilai dalam memori, kita memerlukan
manajer memori yang mengelola memori untuk setiap variabel.
Misalnya, jika kita ingin membuat variabel bertipe integer seperti:

Pada contoh di atas, kita telah membuat variabel 'x'


bertipe integer. Seperti yang kita ketahui bahwa
variabel integer menempati 4 byte, maka variabel 'x'
akan menempati 4 byte untuk menyimpan nilainya.
Latar belakang perlunya Struktur Data LinkedList

Atau kita akan deklarasikan Array x sbb:

Pada contoh di atas, kita telah mendeklarasikan sebuah array berukuran


3. Seperti yang kita ketahui, bahwa semua nilai dari sebuah array
disimpan secara terus menerus /kontinyu,
sehingga ketiga nilai dari sebuah array disimpan
secara berurutan. Total ruang memori yang
ditempati oleh array adalah 3*4 = 12 byte .
Alokasi array berurutan sacara Fisik di memory
Latar belakang perlunya Struktur Data LinkedList

Ada dua kelemahan utama menggunakan array:


1. Kita tidak dapat menyisipkan lebih dari 3 elemen pada contoh di atas
karena hanya 3 ruang yang dialokasikan untuk 3 elemen.
2. Dalam kasus array, banyak pemborosan memori dapat terjadi.
Misalnya, jika kita mendeklarasikan sebuah array berukuran 50 tetapi
kita hanya memasukkan 10 elemen dalam sebuah array. Jadi, dalam
hal ini, ruang memori untuk 40 elemen
lainnya akan terbuang sia-sia dan tidak
dapat digunakan oleh variabel lain karena
seluruh ruang ini ditempati oleh array.
Sehingga perlu solusi yaitu LinkedList
Konsep LinkedList

Daftar tertaut juga merupakan kumpulan elemen, tetapi elemen tidak


disimpan di lokasi yang berurutan.

BUKAN URUTAN SECARA FISIK tetapi URUTAN RELASI TAUTAN URUTAN LOGIK

Misalkan seorang programmer membuat permintaan untuk menyimpan


nilai integer maka ukuran blok memori 4-byte diberikan ke nilai integer.
Pemrogram membuat permintaan lain untuk menyimpan 3 elemen
integer lagi; kemudian, tiga blok memori yang
berbeda ditugaskan ke tiga elemen ini tetapi
blok memori tersedia di lokasi acak. Jadi,
bagaimana elemen-elemen itu terhubung?..
Konsep LinkedList

Elemen-elemen ini dihubungkan satu sama lain dengan memberikan


satu informasi tambahan bersama dengan elemen, yaitu alamat elemen
berikutnya.
Variabel yang menyimpan alamat elemen berikutnya dikenal sebagai
pointer. Linked list berisi dua bagian, yaitu yang pertama adalah elemen
data , dan yang lainnya adalah pointer. Variabel pointer akan
menempati 4 byte yang menunjuk ke elemen berikutnya. Null jika tidak
menunjuk ke node berikutnya
Konsep LinkedList

Daftar tertaut juga dapat didefinisikan sebagai


kumpulan node di mana satu node terhubung ke
node lain, dan node terdiri dari dua bagian, yaitu,
satu adalah bagian data dan yang kedua adalah
bagian alamat
Konsep LinkedList

Bagaimana cara mendeklarasikan Linked list?


Deklarasi array sangat sederhana karena bertipe tunggal. Tetapi daftar
tertaut berisi dua bagian, yang terdiri dari dua jenis yang berbeda, yaitu,
satu adalah variabel sederhana, dan yang kedua adalah variabel
penunjuk.
Kita dapat mendeklarasikan daftar tertaut dengan menggunakan tipe
data yang sama dengan nama kelas /Class: Variable next didefinisikan
sebagai Node; Node adalah identifier nama kelas Node
Keuntungan LinkedList

1. Struktur data dinamis:


Ukuran daftar tertaut tidak tetap karena dapat bervariasi sesuai
dengan kebutuhan kami.
2. Penyisipan dan Penghapusan:
Penyisipan dan penghapusan dalam daftar tertaut lebih mudah
daripada array karena elemen dalam array disimpan di lokasi yang
berurutan. Sebaliknya, dalam kasus daftar tertaut, elemen
disimpan di lokasi acak. Kompleksitas
penyisipan dan penghapusan elemen dari
awal adalah O(1) dalam daftar tertaut,
Keuntungan LinkedList

sedangkan dalam kasus array, kompleksitasnya adalah O(n). Jika kita


ingin menyisipkan atau menghapus elemen dalam array, maka kita
perlu menggeser elemen untuk membuat ruang.
Di sisi lain, dalam daftar tertaut, kita tidak perlu menggeser elemen.
Pada linked list, kita hanya perlu mengupdate alamat pointer di node.

3. Efisiensi Memori
Konsumsi memorinya efisien karena ukuran
daftar tertaut dapat bertambah atau
berkurang sesuai dengan kebutuhan kami.
Keuntungan LinkedList

4. Implementasi
Baik tumpukan maupun antrian dapat diimplementasikan
menggunakan daftar tertaut.

Kekurangan LinkedList

1. Penggunaan memori
Node dalam daftar tertaut menempati lebih banyak memori
daripada array karena setiap node menempati dua jenis variabel
yaitu, satu adalah variabel sederhana, dan
yang lainnya adalah variabel penunjuk yang
menempati 4 byte dalam memori.
Kekurangann LinkedList

2. Traversal /Pelintasan
Dalam linked list, traversal tidak mudah. Jika kita ingin mengakses
elemen dalam daftar tertaut, kita tidak dapat mengakses elemen
secara acak, sebaliknya dalam kasus array, kita dapat mengakses
elemen secara acak dengan indeks.
Sebagai contoh, jika kita ingin mengakses node ke 3, maka kita perlu
untuk melintasi semua node sebelum.
Jadi, waktu yang dibutuhkan untuk
mengakses node tertentu besar.
Kekurangann LinkedList

3. Reverse Traversing
Dalam linked list, backtracking atau reverse traversing sulit dilakukan.
Dalam daftar tertaut ganda, lebih mudah tetapi membutuhkan lebih
banyak memori untuk menyimpan penunjuk belakang.

.
Aplikasi LinkedList

1. Model Representasi Polinomial


Dengan bantuan linked list, polinomial dapat direpresentasikan serta
kita dapat melakukan operasi pada polinomial. Kita tahu bahwa
polinomial adalah kumpulan suku di mana setiap suku mengandung
koefisien dan pangkat. Koefisien dan pangkat setiap suku disimpan
sebagai simpul dan penunjuk tautan menunjuk ke elemen berikutnya
dalam daftar tertaut, sehingga daftar tertaut dapat digunakan untuk
membuat, menghapus, dan menampilkan polinomial.
Aplikasi LinkedList

2. Matriks Sparse /Matrik Jarang


Matriks jarang digunakan dalam perhitungan ilmiah dan analisis
numerik. Daftar tertaut digunakan untuk representasi matriks jarang.
3. Representasi data Record /Rekaman
Berbagai operasi seperti detail siswa, detail karyawan, atau detail
produk dapat diimplementasikan menggunakan daftar tertaut karena
daftar tertaut menggunakan tipe data struktur yang dapat
menampung tipe data berbeda.
Aplikasi LinkedList

4. Model Representasi Stack dan Queue.


Stack, Queue, tree, dan berbagai struktur data lainnya dapat
diimplementasikan menggunakan daftar tertaut.
5. Model Representasi Graff
Graf adalah kumpulan sisi dan simpul, dan graf dapat
direpresentasikan sebagai matriks ketetanggaan dan daftar
ketetanggaan. Jika kita ingin merepresentasikan graf sebagai matriks
adjacency, maka grafik tersebut dapat diimplementasi-
kan sebagai array. Jika kita ingin merepresentasikan
grafik sebagai sebuah adjacency list, maka dapat
diimplementasikan sebagai linked list.
Aplikasi LinkedList

6. Model Representasi Hashing


Untuk mengimplementasikan hashing, kita membutuhkan tabel
hash. Tabel hash berisi entri yang diimplementasikan menggunakan
daftar tertaut.
7. Model Alokasi Memory Dinamis
Daftar tertaut dapat digunakan untuk mengimplementasikan alokasi
memori dinamis. Alokasi memori dinamis adalah alokasi memori
yang
. dilakukan pada saat run-time..
Jenis /tipe LinkedList

Jenis Daftar Tertaut


Berikut ini adalah jenis-jenis linked list:
1. Daftar Tertaut Tunggal
2. Daftar Tertaut Ganda
3. Daftar Tautan Melingkar
4. Daftar Tautan Melingkar Ganda
.
Jenis LinkedList

1. Daftar Tertaut Tunggal


Ini adalah daftar tertaut yang umum digunakan dalam program. Jika
kita berbicara tentang daftar tertaut, itu berarti daftar tertaut
tunggal. Daftar tertaut tunggal adalah struktur data yang berisi dua
bagian, yaitu, satu adalah bagian data, dan yang lainnya adalah
bagian alamat, yang berisi alamat node berikutnya atau penerusnya.
Bagian alamat dalam sebuah node juga dikenal sebagai pointer .
Misalkan kita memiliki tiga node, dan alamat dari
ketiga node ini masing-masing adalah 100, 200
dan 300. Representasi dari tiga node sebagai
linked list ditunjukkan pada gambar di bawah ini:
Jenis LinkedList

Kita dapat mengamati pada gambar di atas bahwa ada tiga node
berbeda yang masing-masing memiliki alamat 100, 200 dan 300.
Node pertama berisi alamat node berikutnya, yaitu 200, node kedua
berisi alamat nodeterakhir, yaitu 300, dan node ketiga berisi nilai
NULL di bagian alamatnya karena tidak menunjuk ke node manapun.
Jenis LinkedList

Pointer yang menyimpan alamat node awal dikenal sebagai pointer


head .
Daftar tertaut, yang ditunjukkan pada diagram di atas, dikenal
sebagai daftar tertaut tunggal karena hanya berisi satu tautan.
Dalam daftar ini, hanya traversal maju yang dimungkinkan; kita
tidak dapat melintasi arah mundur karena hanya memiliki satu
tautan dalam daftar.
Jenis LinkedList

2. Daftar Tertaut Ganda


Seperti namanya, daftar tertaut ganda berisi dua petunjuk. Kita
dapat mendefinisikan daftar tertaut ganda sebagai struktur data
linier dengan tiga bagian: bagian data dan dua bagian alamat
lainnya. Dengan kata lain, daftar tertaut ganda adalah daftar yang
memiliki tiga bagian dalam satu simpul, termasuk satu bagian data,
penunjuk ke simpul sebelumnya, dan penunjuk ke simpul berikutnya.
Misalkan kita memiliki tiga node, dan alamat
node ini masing-masing adalah 100, 200 dan
300. Representasi dari node-node ini dalam
daftar tertaut ganda ditunjukkan di bawah ini:
Jenis LinkedList

Seperti yang dapat kita amati pada gambar di atas, simpul dalam
daftar tertaut ganda memiliki dua bagian alamat; satu bagian
menyimpan alamat berikutnya sementara bagian lain dari node
menyimpan.
alamat node
sebelumnya Node
awal dalam daftar
tertaut ganda
memiliki nilai
NULL di bagian alamat, yang menyediakan
alamat node sebelumnya.
Jenis LinkedList

Dalam representasi di atas, telah didefinisikan struktur yang


ditentukan pengguna bernama node dengan tiga anggota, satu
adalah data tipe integer, dan dua lainnya adalah pointer, yaitu, next
dan prev dari tipe node.
The next pointer variabel menyimpan alamat node berikutnya, dan
prev pointer menyimpan alamat dari node sebelumnya. Tipe dari
kedua pointer,
yaitu next dan prev adalah penunjuk node
karena kedua pointer tersebut menyimpan
alamat node dari tipe node yang
ditunjuknya.
Jenis LinkedList

3. Daftar tertaut melingkar


Daftar tertaut melingkar adalah variasi dari daftar tertaut tunggal.
Satu-satunya perbedaan antara daftar tertaut tunggal dan daftar
tertaut melingkar adalah bahwa simpul terakhir tidak menunjuk ke
simpul mana pun dalam daftar tertaut tunggal, sehingga bagian
tautannya berisi nilai NULL.
Di sisi lain, daftar tertaut melingkar adalah daftar di mana simpul
terakhir terhubung ke simpul pertama,
sehingga bagian tautan dari simpul terakhir
menyimpan alamat simpul pertama. Daftar
tertaut melingkar tidak memiliki simpul awal
dan akhir.
Jenis LinkedList

Kita dapat melintasi ke segala arah, yaitu mundur atau maju.


Representasi diagram dari daftar tertaut melingkar ditunjukkan di
bawah ini:
Jenis LinkedList

4. Daftar tertaut Edaran Ganda


Daftar tertaut melingkar ganda memiliki fitur daftar tertaut
melingkar dan daftar tertaut ganda .

Gambar di atas menunjukkan representasi dari


daftar tertaut melingkar ganda di mana simpul
terakhir dilampirkan ke simpul pertama dan
dengan demikian menciptakan sebuah lingkaran.
Jenis LinkedList

Ini adalah daftar tertaut ganda juga karena setiap node juga
menyimpan alamat node sebelumnya. Perbedaan utama antara
daftar tertaut ganda dan daftar tertaut melingkar ganda adalah
bahwa daftar tertaut ganda tidak mengandung nilai NULL di bidang
node sebelumnya. Karena tautan melingkar ganda berisi tiga
bagian, yaitu, dua bagian alamat dan satu bagian data, maka
representasinya mirip dengan daftar tertaut ganda.

Anda mungkin juga menyukai