Linked list

8

Click here to load reader

description

linked list

Transcript of Linked list

Page 1: Linked list

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.

Page 2: Linked list

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.

Page 3: Linked list

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

Page 4: Linked list

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

Page 5: Linked list

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

Page 6: Linked list

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.

Page 7: Linked list

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

Page 8: Linked list

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.