1
PENDAHULUAN
Struktur data adalah cara menyimpan atau merepresentasikan data di dalam
komputer agar bisa dipakai secara efisien. Sedangkan data adalah representasi dari
fakta dunia nyata. Fakta atau keterangan tentang kenyataan yang disimpan, direkam
atau direpresentasikan dalam bentuk tulisan, suara, gambar, sinyal atau symbol.
Secara garis besar type data dapat dikategorikan menjadi :
1. Type data sederhana
a. Type data sederhana tunggal, misalnya Integer, real, boolean dan karakter
b. Type data sederhana majemuk, misalnya String
2. Struktur Data, meliputi
a. Struktur data sederhana, misalnya array dan record
b. Struktur data majemuk, yang terdiri dari Linier : Stack, Queue, serta List
dan Multilist Non Linier : Pohon Biner dan Graph
Pemakaian struktur data yang tepat di dalam proses pemrograman akan
menghasilkan algoritma yang lebih jelas dan tepat, sehingga menjadikan program
secara keseluruhan lebih efisien dan sederhana. Struktur data yang ″standar″ yang
biasanya digunakan dibidang informatika adalah :
List linier (Linked List) dan variasinya
Multilist
Stack (Tumpukan)
Queue (Antrian)
Tree ( Pohon )
Graph ( Graf )
Kajian struktur data merupakan kajian yang sangat penting dalam bidang
informatika. Dan di zaman sekarang ini yang teknologinya semakin berkembang,
dibutuhkan struktur data yang efisien yang dapat meningkatkan kinerja program.
2
Salah satu bentuk struktur data yang berisi kumpulan data yang tersusun secara
sekuensial, saling bersambungan, dinamis dan terbatas adalah linked list (senarai
berkait). Suatu linked list adalah suatu simpul (node) yang dikaitkan dengan simpul
yang lain dalam suatu urutan tertentu. Suatu simpul dapat berbentuk suatu struktur
atau class. Simpul harus mempunyai satu atau lebih elemen struktur atau class yang
berisi data.
3
LINKED LIST
Linked list (one way list) adalah suatu kumpulan elemen data (yang disebut
sebagai node) dimana urutannya ditentukan oleh suatu pointer.
Setiap elemen (node) dari suatu linked list terdiri atas dua bagian, yaitu :
INFO , berisi informasi tentang elemen data yang bersangkutan.
NEXT (link field/next pointer field), berisi alamat dari elemen (node)
selanjutnya yang dituju.
Berikut ini sebuah contoh linked list yang terdiri atas 4 node :
Pada
node ke-4 field NEXT-nya berisi NULL, artinya node ke-4 tsb. adalah node terakhir.
Node-node dalam linked list tidak harus selalu digambarkan paralel seperti pada
gambar diatas. Linked list pada contoh diatas dapat pula digambarkan seperti berikut
ini :
CATATAN :
Ada dua hal yang menjadi kerugian dengan representasi suatu data dengan linked
list ini,
yaitu :
info next info info infonext next nextstart
node ke-1 node ke-2 node ke-3 node ke-4
null
null
info
info
info
info
next
next
next
next
4
1. Diperlukan ruang tambahan untuk menyatakan/tempat field pointer.
2. Diperlukan waktu yang lebih banyak untuk mencari suatu node dalam
linked list.
Sedangkan keuntungannya adalah :
1. Jenis data yang berbeda dapat di-link.
2. Operasi REMOVE atau INSERT hanya dilakukan dengan mengubah
pointer-nya saja.
Secara teori, linked list adalah sejumlah node yang dihubungkan secara linier
dengan bantuan pointer. Dikatakan single (singly) linked apabila hanya ada satu
pointer yang menghubungkan setiap node. single artinya field pointer-nya hanya satu
buah saja dan satu arah.
Linked list adalah struktur data yang paling dasar. Linked list terdiri atas
sejumlah unsur-unsur dikelompokkan, atau terhubung, bersama-sama di suatu deret
yang spesifik. Linked list bermanfaat di dalam memelihara koleksi-koleksi data, yang
serupa dengan array. Bagaimanapun juga, linked list dan array mempunyai
perbedaan. Memakai Linked list lebih bagus dibandingkan dengan array/larik baik
dalam banyak hal. Secara rinci, linked list lebih efisien di dalam melaksanakan
penyisipan-penyisipan dan penghapusan-penghapusan. Linked list juga menggunakan
alokasi penyimpanan secara dinamis, yang merupakan penyimpanan yang
dialokasikan pada runtime. Karena di dalam banyak aplikasi, ukuran dari data itu
tidak diketahui pada saat kompile, hal ini bisa merupakan suatu atribut yang baik
juga. Setiap node akan berbentuk struct dan memiliki satu buah field bertipe struct
yang sama, yang berfungsi sebagai pointer. Dalam menghubungkan setiap node, kita
dapat menggunakan cara first-create-first-access ataupun first-create-last-access.
Yang berbeda dengan deklarasi struct sebelumnya adalah satu field bernama next,
yang bertipe struct tnode. Hal ini sekilas dapat membingungkan. Namun, satu hal
5
yang jelas, variabel next ini akan menghubungkan kita dengan node di sebelah kita,
yang juga bertipe struct tnode. Hal inilah yang menyebabkan next harus bertipe struct
tnode.
Linked list atau senarai adalah struktur data berisis kumpulan data / node yang
tersusun secara sequential, saling sambung menyambung dan dinamis.
Linked list ini mirip array, namun linked list ini bersifat dinamis, penambahan
data tidak terbatas, sequential acces, dan penghapusan data mudah.
Prinsip linked list dapat kita bandingkan seperti suatu rantai yang matanya
dihubungkan satu sama lain. Mata rantai tersebut dapat kita asosiasikan dengan
record atau node. Jadi, untuk selanjutnya dalam konteks linked list kita menggunakan
terminology NODE untuk pengertian sebuah record.
Ciri khas suatu node dalam linked list adalah harus selalu terdapat field, paling
sedikit dua bagian, yaitu :
1. Data
2. Pointer.
Secara umum linked list dibedakan atas 2 macam, yaitu :
1. Single Linked List dan
2. Double Linked List
Single Linked List mempunyai satu pointer untuk setiap node yang menunjuk ke
node berikutnya, artinya hanya punya satu arah.
Gambar 1. Node
yang terakhir selalu menunjuk ke elemen kosong, dan diidentifikasi dengan nilai NIL
Pada Gambar 1 dapat kita lihat bahwa setiap record mempunyai satu pointer
yang menunjuk ke record yang berikutnya, dengan pengecualian untuk record
terakhir yang menunjuk ke record yang tidak ada. Record yang tidak ada tersebut kita
definisi dengan nilai Nul (NIL) yang artinya juga sebagi akhir suatu list.
Double Linked List mempunyai dua pointer yang menunjuk ke node berikutnya dan
6
sebelumnya, artinya punya dua arah.
Gambar 2. Previous
pointer Node
pertama dan Next pointer Node terakhir menunjuk ke elemen kosong, dan diidentifikasi dengan nilai
NULL
Double Linked List dapat dilihat pada Gambar 2. Pointer Node pertama tidak
mempunyai pendahulu, jadi pointer yang menunjuk ke elemen sebelumnya adalah
elemen yang tidak ada (NIL) dan analog untuk node terakhir, dimana pointer yang
menunjuk ke elemen berikutnya adalah elemen yang tidak ada (NIL).
OPERASI DASAR PADA LINKED LIST.
Ada beberapa aturan yang didefinisikan pada operasi didalam linked list, yaitu :
Jika P adalah suatu variabel pointer, maka nilainya adalah alamat atau lokasi dari
variabel lain yang dituju.
Operasi yang didefinisikan pada suatu variabel pointer adalah :
1. Test apakah sama dengan NULL.
2. Test untuk kesamaan dengan variabel pointer lain.
3. Menetapkan sama dengan NULL.
4. Menetapkan menuju ke node lain.
7
Notasi yang didefinisikan sehubungan dengan operasi diatas adalah :
1. NODE(P), artinya node yang ditunjuk oleh pointer P.
2. INFO(P), artinya nilai INFO dari node yang ditunjuk pointer P.
3. NEXT(P), artinya hubungan (link) selanjutnya dari node yang ditunjuk oleh
pointer P.
Sebagai contoh, perhatikan linked list dibawah ini :
NODE(P) =
node yang
ditunjuk oleh P
yaitu node
pertama.
INFO(P) = A
NEXT(P) = node ke-dua
INFO(NEXT(NEXT(P))) = C
A
B
C
D
startinfo
info
info
info
next
next
next
next
null
P
node ke-1
node ke-2
node ke-3
node ke-4
8
KESIMPULAN
Linked list adalah sebuah struktur untuk menyimpan data yang bersifat dinamik
Beberapa operasi dapat diterapkan pada linked list seperti sisip(insert),
hapus(delete)
Operasi-operasi yang ada pada linked list relatif lebih sulit jika dibandingkan
dengan operasi-operasi pada struktur yang statis
Null adalah suatu kondisi khusus dimana pointer itu belum di set dengan sebuah
address tertentu, artinya pointer tidak mrnunjuk ke alamat manapun.
Top Related