0% menganggap dokumen ini bermanfaat (0 suara)
162 tayangan

Linked List

Linked list adalah struktur data yang menyimpan elemen-elemennya secara beruntai dengan menggunakan pointer. Terdapat dua jenis linked list, yaitu single linked list dan double linked list. Single linked list menggunakan satu pointer untuk menghubungkan elemen, sedangkan double linked list menggunakan dua pointer. Linked list dapat digunakan untuk implementasi stack dan antrian (queue).

Diunggah oleh

Hafid Muhammad
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
162 tayangan

Linked List

Linked list adalah struktur data yang menyimpan elemen-elemennya secara beruntai dengan menggunakan pointer. Terdapat dua jenis linked list, yaitu single linked list dan double linked list. Single linked list menggunakan satu pointer untuk menghubungkan elemen, sedangkan double linked list menggunakan dua pointer. Linked list dapat digunakan untuk implementasi stack dan antrian (queue).

Diunggah oleh

Hafid Muhammad
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 5

LINKED LIST

Pengertian Linked list :

Sekumpulan elemen bertipe sama, yang mempunyai keterurutan tertentu, yang setiap
elemennya terdiri dari dua bagian.
Linked list adalah suatu struktur data yg merupakan suatu rangkaian atau daftar record
berjenis sama. Kemudian dihubungkan melalui bantuan pointer. Pengalokasian daftar
dapat dilakukan secara dinamis sehingga isi dari daftar dapat dimanipulasi.
Struktur berupa rangkaian elemen saling berkait dimana setiap elemen dihubungkan
elemen lain melalui pointer. Pointer adalah alamat elemen. Penggunaan pointer untuk
mengacu elemen berakibat elemen-elemen bersebelahan secara logik walau tidak
bersebelahan secara fisik di memori.

Single Linked List


Tempat yang disediakan pada satu area memori tertentu untuk menyimpan data dikenal
dengan sebutan node atau simpul. Setiap node memiliki pointer yang menunjuk ke simpul
berikutnya sehingga terbentuk satu untaian, dengan demikian hanya diperlukan sebuah
variabel pointer. Susunan berupa untaian semacam ini disebut Single Linked List (NULL
memilik nilai khusus yang artinya tidak menunjuk ke mana-mana. Biasanya Linked List pada
titik akhirnya akan menunjuk ke NULL).
Pembuatan Single Linked List dapat menggunakan 2 metode:

LIFO (Last In First Out), aplikasinya : Stack (Tumpukan)


FIFO (First In First Out), aplikasinya : Queue (Antrean)

Double Linked List


Salah satu kelemahan single linked list adalah pointer (penunjuk) hanya dapat bergerak
satu arah saja, maju/mundur, atau kanan/kiri sehingga pencarian data pada single linked list
hanya dapat bergerak dalam satu arah saja. Untuk mengatasi kelemahan tersebut, dapat
menggunakan metode double linked list. Linked list ini dikenal dengan nama Linked list
berpointer Ganda atau Double Linked List.
Circular Double Linked List
Merupakan double linked list yang simpul terakhirnya menunjuk ke simpul terakhirnya
menunjuk ke simpul awalnya menunjuk ke simpul akhir sehingga membentuk suatu
lingkaran.
Operasi-Operasi yang ada pada Linked List

Insert : Istilah Insert berarti menambahkan sebuah simpul baru ke dalam suatu linked
list.

IsEmpty : Fungsi ini menentukan apakah linked list kosong atau tidak.

Find First : Fungsi ini mencari elemen pertama dari linked list

Find Next : Fungsi ini mencari elemen sesudah elemen yang ditunjuk now

Retrieve : Fungsi ini mengambil elemen yang ditunjuk oleh now. Elemen tersebut
lalu dikembalikan oleh fungsi.

Update : Fungsi ini mengubah elemen yang ditunjuk oleh now dengan isi dari sesuatu

Delete Now : Fungsi ini menghapus elemen yang ditunjuk oleh now. Jika yang
dihapus adalah elemen pertama dari linked list (head), head akan berpindah ke elemen
berikut.

Delete Head : Fungsi ini menghapus elemen yang ditunjuk head. Head berpindah ke
elemen sesudahnya.

Clear : Fungsi ini menghapus linked list yang sudah ada. Fungsi ini wajib dilakukan
bila anda ingin mengakhiri program yang menggunakan linked list. Jika anda
melakukannya, data-data yang dialokasikan ke memori pada program sebelumnya
akan tetap tertinggal di dalam memori.

A. STACK DENGAN SINGLE LINKED LIST


Selain implementasi stack dengan array seperti telah dijelaskan sebelumnya, stack daat
diimplementasikan dengan single linked list. Keunggulannya dibandingkan array adalah
penggunaan alokasi memori yang dinamis sehingga menghindari pemborosan memori.
Misalnya pada stack dengan array disediakan tempat untuk stack berisi 150 elemen,
sementara ketika dipakai oleh user stack hanya diisi 50 elemen, maka telah terjadi
pemborosan memori untuk sisa 100 elemen, yang tak terpakai. Dengan penggunaan linked
list maka tempat yang disediakan akan sesuai dengan banyaknya elemen yang mengisi stack.
Dalam stack dengan linked list tidak ada istilah full, sebab biasanya program tidak
menentukan jumlah elemen stack yang mungkin ada (kecuali jika sudah dibatasi oleh
pembuatnya). Namun demikian sebenarnya stack ini pun memiliki batas kapasitas, yakni
dibatasi oleh jumlah memori yang tersedia.
Operasi-operasi untuk Stack dengan Linked List

IsEmpty : Fungsi memeriksa apakah stack yang adamasih kosong.

Push : Fungsi memasukkan elemen baru ke dalam stack. Push di sini mirip dengan
insert dalam single linked list biasa.

Pop : Fungsi ini mengeluarkan elemen teratas dari stack.

Clear : Fungsi ini akan menghapus stack yang ada.

B. QUEUE DENGAN DOUBLE LINKED LIST


Selain menggunakan array, queue juga dapat dibuat dengan linked list. Metode linked
list yang digunakan adalah double linked list.

Operasi-operasi Queue dengan Double Linked List

IsEmpty

Fungsi IsEmpty berguna untuk mengecek apakah queue masih kosong atau sudah berisi
data. Hal ini dilakukan dengan mengecek apakah head masih menunjukkan pada Null atau
tidak. Jika benar berarti queue masih kosong.

IsFull

Fungsi IsFull berguna untuk mengecek apakah queue sudah penuh atau masih bisa
menampung data dengan cara mengecek apakah Jumlah Queue sudah sama dengan
MAX_QUEUE atau belum. Jika benar maka queue sudah penuh.

EnQueue

Fungsi EnQueue berguna untuk memasukkan sebuah elemen ke dalam queue (head dan
tail mula-mula meunjukkan ke NULL).

DeQueue

Procedure DeQueue berguna untuk mengambil sebuah elemen dari queue. Hal ini
dilakukan dengan cara menghapus satu simpul yang terletak paling depan (head).
Dengan menggunakan linked list maka programmer dapat menimpan datanya kapanpun
dibutuhkan. Linked list mirip dangan array, kecuali pada linked list data yang ingin disimpan
dapat dialokasikan secara dinamis pada saat pengoperasian program (run-time).
Pada array, apabila programmer ingin menyimpan data, programmer diharuskan untuk
mendefinisikan besar array terlebih dahulu, seringkali programmer mengalokasikan array
yang sangat besar(misal 100). Hal ini tidak efektif karena seringkali yang dipakai tidak
sebesar itu. Dan apabila programmer ingin menyimpan data lebih dari seratus data, maka hal
itu tidak dapat dimungkinkan karena sifat array yang besarnya statik. Linked list adalah salah
satu struktur data yang mampu menutupi kelemahan tersebut.
Bentuk node single linkled list non circular

Single : field pointer-nya hanya satu arah, pada akhir not pointer-nya menunjuk
NULL
Linked List : Node - node tersebut saling terhubung satu sama lain, setiap node pada
linked list mempunyai field yang berisi pointer ke node berikutnya, dan juga memiliki
field yang berisi data. Mode terakhir akan menunjuk NULL yang akan digunakan
sebagai kondisi berhenti pada saat pembacaan isi linked list.

Single linked list non circular menggunakan head


Dibutuhkan satu buah variabel pointer : head yang akan selaku menunjuk pada node
pertama. Deklarasi Pointer Penunjuk Head Single Linked List sebagai berikut :

TNode*head

Menambah Node Di Depan

Penambahan node baru akan dikaitan di node paling depan, namun pada daat pertama
kali (data masih kosong), maka penambahan data dilakukan dengan cara : node head
ditunjukan ke node baru tersebut
Prinsipnya adalah mengkaitkan node baru dengan head, kemudian head akan menunjuk
pada data baru tersebut sehingga head akan tetap sekaku menjadi data terdepan.

Menambah Node Di Belakang

Penambahan dilakukan di belakang, namin pada saat pertama kali, node langsung
ditunjuk oleh head, membutuhkan pointer bantu untuk mengetahui node terbelakang
kemudian dikaitkan dengan node baru, perlu digunakan perulangan.

Menghapus Node Di Depan

Penghapusan node tidak boleh dilakukan jika keadaan node sedang ditunjuk oleh
pointer, maka harus dilakukan penggunaan suatu pointer lain (hapus) yang digunakan untuk
menunjuk node yang akan dihapus, barulah kemusian menghapus pointer menggunakan
perintah delete. Sebelum data terdepan terhapus, terlebih dahulu head harus menunhuk ke
alamat berikutnya agar list tidak putus, jika head masih NULL berarti data masih kosong.

Menghapus Node Di Belakang

Membutuhkan pointer bantu dan hapus. Pointer hapus digunakan untuk menunjuk node
yang akan dihapus, Pointer bantu untuk menunjuk node sebelum node yang akan dihapus
yang akan menjadi node yang terakhir. Pointer bantu digunakan untuk menunjuk ke nilai
NULL selalu bergerak sampai sebelum node yang akan dihapus kemudian pointer hapus
diletakan setelah pointer bantu. Selanjutnya pointer hapus akan menunjuk ke NULL.

Single linked list non circular menggunakan heas dan tail


Dibutuhkan dua variabel pointer head dan tail. Head selalu menunjuk ke node pertama,
sedangkan tail selalu menunjuk ke node terakhir
Kelebihan dari single liked list dengan heag dan tail adalah pada penambahan data di
belakang, hanya dibutuhkan tail yang mengikat node baru saja tanpa harus menggunakan
perulangan pointer bantu.

Menghapus Node Di Depan (Dengan Head dan Tail)


Penghapusan node tidak boleh dilakukan jika keadaan node sadang ditunjuk oleh
pointer, maka harus dilakukan penunjukan terlebih dahulu dengan pointer hapus pada head,
kemudian dilakukan pergeseran head ke node berikutnya sehingga data setelah head menjadi
head baru, kemudian menghapus pointer hapus dengan menggunakan perintak delete. Jika
tail masih NULL maka berarti list masih kosong.

Menghapus Node Di Belakang(Dengan Head Dan Tail)


Penghapusan tidak boleh dilakukan jika keasaan node dedang ditunjuk oleh pointer,
maka harus dilakukan penunjukan terlebih dahulu dengan mengginakan variabel hapus pada
tail. JIka Tail masih NULL maka berarti list masih kosong. Dibutuhkan pointer bantu untuk
membantu pergeseran dari head ke node berikutnya dampai debelim tail, sehingga tail dapat
ditunjukan ke bantu, dan bantu tersebut akan nenjadi tail yang baru. Setelah itu hapus pointer
hapus dengan menggunakan menggunakn perintah delete.

Anda mungkin juga menyukai