Rabu, 10 Juni 2009

Linked List


Linked List

Linked list adalah salah satu struktur data dasar yang sangat fundamental dalam bidang ilmu komputer. Dengan menggunakan linked list maka programmer dapat menyimpan 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.

Secara umum linked list tersusun atas sejumlah bagian-bagian data yang lebih kecil yang terhubung (biasanya melalui pointer). Linked list dapat divisualisasikan seperti kereta, bagian kepala linked list adalah mesin kereta, data yang disimpan adalah gerbong, dan pengait antar gerbong adalah pointer.

Programmer membaca data menyerupai kondektur yang ingin memeriksa karcis penumpang. Programmer menyusuri linked list melalui kepalanya, dan kemudian berlanjut ke gerbong (data) berikutnya, dan seterusnya sampai gerbong terakhir (biasanya ditandai dengan pointer menunjukkan alamat kosong (NULL)). Penyusuran data dilakukan secara satu persatu sehingga penyusuran data bekerja dengan keefektifan On. Dibandingkan array, ini merupakan kelemahan terbesar linked list. Pada array, apabilan programmer ingin mengakses data ke-n (index n), maka programmer dapat langsung mengaksesnya. Sedangkan dengan linked list programmer harus menyusuri data sebanyak n terlebih dahulu.

Apabila kita menggunakan java, konsep linked list ini sudah terlingkupi dalam Java Collection Framework (JCF). Dengan Java, kita tidak perlu lagi membuat LinkedList. Kita tinggal menggunakan class yang sudah disediakan dalam JCF.

Berikut ini saya akan menjelaskan operasi-operasi yang ada pada Linked List yaitu sebagai berikut :

Ø Insert
Insert digunakan untuk menambahkan sebuah simpul baru ke dalam suatu linked list.

Ø IsEmpty
IsEmpty digunakan untuk mengetahui apakah linked list kosong atau tidak.

Ø Fine First
Fine First digunakan untuk mencari elemen pertama dari linked lis

Ø Fine Next
Fine Next digunakan untuk mencari elemen sesudah elemen yang ditunjuk oleh now.

Ø Retrieve
Retrieve digunakan untuk mengambil elemen yang ditunjuk oleh now. Kemudian elemen tersebut akan dikembalikan oleh fungsi.

Ø Update
Update digunkan untuk mengubah elemen yang ditunjuk oleh now dengan isi dari sesuatu.

Ø Delete Now
Delete Now digunakan untuk menghapus elemen yang ditunjuk oleh now.

Ø Delete Head
Delete Head digunakan untuk menghapus elemen yang ditunjuk head. Head berpindah ke elemen sesudahnya.

Ø Clear
Clear digunakan untuk 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.

Single Linked List Circular

Single Linked List Circular (SLLC) adalah Single Linked List yang pointer nextnya menunjuk pada dirinya sendiri. Jika Single Linked List tersebut terdiri dari beberapa node, maka pointer next pada node terakhir akan menunjuk ke node terdepannya.

Pengertian:
Node : rangkaian beberapa simpul
Single : artinya field pointer-nya hanya satu buah saja dan satu arah.
Linked List : artinya node-node tersebut saling terhubung satu sama lain.
Circular : artinya pointer next-nya akan menunjuk pada dirinya sendiri sehingga berputar

Double Linked List

Double Linked List (DLL) adalah suatu cara pengolahan data yang bekerja dengan record dalam jumlah besar, sehingga membutuhkan alokasi memori dinamis yang besar pula. DLL biasanya digunakan pada saat alokasi memori konvensional tidak lagi bisa diandalkan. Sedangkan bekerja dengan data yang besar tidak dapat dihindari lagi, karena tidak jarang pula, data besar tersebut memiliki hubungan yang erat.

Berikut ini saya akan memberikan contoh syntax dari linked list:

Single Linked List

#include <iostream.h>

#include <conio.h>

struct TNode

{

int data;

TNode *next;

};

TNode *head;

void init()

{

head = NULL;

}

int isEmpty()

{

if(head== NULL) return 1;

else return 0;

}

void insertDepan(int dataBaru)

{

TNode *baru;

baru = new TNode;

baru->data = dataBaru;

baru->next = NULL;

if(isEmpty()==1)

{

head=baru;

head->next = NULL;

}

else

{

baru->next = head;

head = baru;

}

cout<<endl;

cout<<"---> Data telah masuk...\n";

getch();

}

void hapusDepan()

{

TNode *hapus;

int d;

if (isEmpty()==0)

{

if(head->next != NULL)

{

hapus = head;

d = hapus->data;

head = head->next;

delete hapus;

} else

{

d = head->data;

head = NULL;

}

cout<<d<<"data telah terhapus...\n"<<

} else cout<<"Masih kosong...\n";

getch();

}

void search(int caridata)

{

TNode *bantu;

bantu = head;

int ketemu = 0;

int index=0;

if(isEmpty()==0)

{

while(bantu!=NULL)

{

bantu->data;

if (caridata == bantu->data)

{

cout<<endl;

cout<<" Data Yang Ditemukan..."<<endl;

cout<<" Index Ke - "<

ketemu = 1;

break;

}

bantu=bantu->next;

index++;

}

cout<<endl;

if (ketemu == 0)

cout<<" Data Tidak Ditemukan...\n"<<endl;

cout<<endl;

} else

{

cout<<" Masih kosong..."<<endl;

cout<<" Anda belum memasukkan data...";

}

getch();

}

void tampil()

{

TNode *bantu;

bantu = head;

if(isEmpty()==0)

{

while(bantu!=NULL)

{

cout<<"-->"<<bantu->data<<" ";

bantu=bantu->next;

}

cout<<" --> NULL";

cout<< ;

}else

{

cout<<"Anda belum memasukkan data...\n"<<endl;

cout<<"Silahkan masukkan data terlebih dahulu...\n";

}

getch();

}

void main()

{

int pil,data_anda,cari;

init();

do

{

clrscr();

cout<<"--------Menu Pilihan------------"<<endl;

cout<<"#########################"<<endl;

cout<<"# 1. Memasukkan List #"<

cout<<"# 2. Menghapus Depan #"<<endl;

cout<<"# 3. Menamplikan Data #"<

cout<<"# 4. Mencari Data #"<

cout<<"# 5. Keluar #"<<endl;

cout<<"#########################"<<endl;

cout<<endl;

cout<<"Pilihan anda = "; cin>>pil;

switch(pil)

{

case 1:

cout<<endl;

cout<<"Masukan data = "; cin>>data_anda;

insertDepan(data_anda);

break;

case 2:

hapusDepan();

break;

case 3:

cout<<endl;

cout<<endl;

tampil();

break;

case 4:

cout<<endl;

cout<<&l;" Data yg Dicari --> "; cin>>cari;

search(cari);

break;

};

}

while(pil!=5);

}

Sumber Dari Herison Subakti, Meike Prastiwi dan Wikipedia bahasa Indonesia, ensiklopedia bebas

Sekian artikel tentang Linked List dari saya, jika ada kekurangan atau kata yang kurang berkenan bagi para pembaca harap dimaklumi dan terima kasih kepda narasumber.

2 komentar:

Gus Ady on 12 Juni 2009 pukul 22.39 mengatakan...

contoh progamnya mn nih!!!!!!!kok cuma tulisan aj??????????

Adi Zone Cyber on 12 Juni 2009 pukul 23.05 mengatakan...

contoh programnya uda ada kok...
ntar tak posting....

Posting Komentar

silahkan tulisakan komentar anda disini....

 

Adi Zone Cyber Blak Magik is Designed by productive dreams for smashing magazine Bloggerized by Ipiet © 2008