Linked List
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.
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.
Push : Fungsi memasukkan elemen baru ke dalam stack. Push di sini mirip dengan
insert dalam single linked list biasa.
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.
TNode*head
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.
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.
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.
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.