Senin, 15 Juni 2009

Linked List Dalam Bahasa C


Linked List Dalam Bahasa C++

I. Pengertian

Dalam masa sekarang ini kita dituntut untuk berpikir cerdas dalam menentukan metode yang kita butuhkan sebelum merancang sebuah program, termasuk dalam hal pengefisienan data. Kebutuhan yang kompleks menuntut semakin bertambahnya data pada sebuah system. jika diumpamakan, pada sebuah system yang memiliki jumlah record yang banyak, dan setiap record memiliki data yang cukup besar,kita tidak mungkin mengedit satu data kedata lainnya, cara tersebut sangat rumit dan banyak menghabiskan waktu user, maka dari itu diperlukan suatu metode dalam mengurutkan jumlah data agar menjadi satu kesatuan dan tentunya saling berhubungan,salah satu metodenya ialah linked list. Linked List atau yang sering dikenal dengan senari berantai merupakan salah satu metode pembelajaran dalam bahasa C,linked list dapat diartikan sebagai rantai data yang saling berhubungan antara satu dengan yang lainnya agar mempermudah dalam mengedit field data yang tersimpan dalam jumlah yang sangat kompleks. Dalam linked list terdapat istilah node” yang berarti kumpulan elemen-elemen dan terkait yang terdapat pada linked list. Sebelum memahami linked list kita hendaknya terlebih dahulu memahami apa itu node, node pada linked list dibagi menjadi 2 bagian yaitu bagian data dan penghantar data atau yang di kenal dengan nama pointer”. Untuk lebih jelasnya, node terlihat pada gambar di bawah ini:


Dari gambar diatas diilustrasikan beberapa node, setiap node memiliki masing-masing data dan terdapat pointer yang dijadikan sebagai penghubung atau penunjuk arah dari satu data ke data yang lainnya. Null berarti menunjukan suatu elemen tidak menunjukan kondisi apapun.

II. Perancangan Linked list

a. Single Linked list

Tahapan pertama ialah membuat struct (karena setiap node akan berbentuk struct) Dan memiliki satu buah fungsi pointer juga bertype struct yang akan menghubungkan setiap node .

Contoh Rancangan sintaknya seperti berikut :

struct tnode

{

int cobalink;

struct tnode *next;

}

Penjelasannya :

*Pendeklrasian next sebagai pointer yang dijadikan penghubung antar node yang saling berkaitan.

Tahapan selanjutnya mendeklarasikan variable yang bertype struct tnode yang berfungsi sebagai head,node aktif, linked list,dan node sementara. Pendeklrasiannya sbb:

struct tnode *head=NULL, *curr=NULL,

*node=NULL;

Untuk membuat single linked list,kita terlebih dahulu harus mengisikan field dengan nilai tertentu(cobalink),

Sintaknya sbb :

for (i=0; i<6;>

{

node = (struct tnode *)

malloc (sizeof(struct tnode));

node -> cobalink = i;

if (head == NULL)

{

head = node;

curr = node;

}else

{

curr -> next = node;

curr = node;

}

}

curr -> next = NULL;

curr = head;

while (curr != NULL)

{

printf(“%d “, curr -> cobalink);

curr = curr -> next;

}

printf(“\n”);

#include

#include

int main()

{

struct tnode

{

int cobalink;

struct tnode *next;

};

struct tnode *head=NULL,

*curr=NULL, *node=NULL;

int i;

for (i=0; i<5;>

{

node = (struct tnode *)

malloc (sizeof(struct tnode));

node -> x = i;

if (head == NULL)

{

head = node;

curr = node;

}else

{

curr -> next = node;

curr = node;

}

}

curr -> next = NULL;

curr = head;

while (curr != NULL)

{

printf(“%d “, curr -> x);

curr = curr -> next;

}

printf(“\n”);

return 0;

}

Penjelasannya :

Kita membuat perulangan dari 0 – 5,perulangan tersebut akan membentuk 6 node yang setiap fieldnya (cobalink) akan bernilai 0 – 5,pada sintak tersebut terdapat perintah “malloc” ,fungsi dari perintah tersebut ialah memesan alokasi penempatan memori pada program. Setelah itu program akan menguji apakah head bernilai null (bernilai Null jika head hanya memiliki satu node), jika keadanya lain ( else ) maka kita akan menghubungkan pointer next dari node aktif ke node yang baru (menghubungkan node lama dengan node baru), tahapan berikutnya ialah menghubungkan pointer next terakhir ke Null,jika sintak sucses di jalankan maka terbentuklah single list baru, agar lebih jelas dari pembuktian dari kode tersebut kita mengeceknya dilihat dengan kode yang berisikan perintah print’.pada sintak tersebut dijelaskan node aktif diletakkan pada posisi head,setelah itu node aktif di pindahkan ke posisi sebelumnya dan tahap terakhir kita hanya menambahkan sintak pemanggilan untuk melakukan dealokasi (ditunjukan dengan sintak à#include …dst hingga selesai..

b. Double Linked List

Lain Halnya dengan single List, double Linked List adalah suatu linked list yang mempunyai 2 penunjuk ke data sebelumnya dan berikutnya, memiliki 2 buah pointer, setiap node akan terhubung dengan pointer kanan dan kiri , contoh sintak dari metode double linked list ialah sebagai berikut :

struct tnode

{

int cobalink;

struct tnode *prev;

struct tnode *next;

};

struct tnode *head=NULL,

*curr=NULL, *node=NULL,

*tail=NULL;

int i;

for (i=0;i<6;i++)

{

node = (struct tnode *)

malloc (sizeof(struct tnode));

node -> cobalink = i;

if (head == NULL)

{

head = node;

head -> prev = NULL;

curr = node;

}else

{

curr -> next = node;

node -> prev = curr;

curr = node;

}

}

curr -> next = NULL;

tail = curr;

if (head == NULL)

{

head = node;

head -> prev = NULL;

curr = node;

}else

{

curr -> next = node;

node -> prev = curr;

curr = node;

}

curr = head;

while (curr != NULL)

{

printf(“%d “, curr -> cobalink);

curr = curr -> next;

}

printf(“\n”);

curr = tail;

while (curr != NULL)

{

printf(“%d “, curr -> cobalink);

curr = curr -> prev;

}

printf(“\n”);

#include

#include

int main()

{

struct tnode

{

int cobalink;

struct tnode *prev;

struct tnode *next;

};

struct tnode *head=NULL,

*curr=NULL, *node=NULL,

*tail=NULL;

int i;

for (i=0;i<6;i++)

{

node = (struct tnode *)

malloc (sizeof(struct tnode));

node -> cobalink = i;

if (head == NULL)

{

head = node;

head -> prev = NULL;

curr = node;

}else

{

curr -> next = node;

node -> prev = curr;

curr = node;

}

}

curr -> next = NULL;

tail = curr;

curr = head;

while (curr != NULL)

{

printf(“%d “, curr -> cobalink);

curr = curr -> next;

}

printf(“\n”);

curr = tail;

while (curr != NULL)

{

printf(“%d “, curr -> cobalink);

curr = curr -> prev;

}

printf(“\n”);

return 0;

}

Perintah yang ada pada linked list :

  • Free

Yaitu sintak yang berfungsi untuk mengosongkan memori yang telah teralokasikan sebelumnya, sehingga dalam keadaan tersebut keadaan memori telah terbebas.

  • Malloc

Yaitu salah satu sintak yang berfungsi untuk meminta pengalokasian memori pada sebuah system.

Beberapa operasi yang ada pada linked list :

  1. Insert

Menambahkan suatu simpul baru ke dalam suatu linked list

  1. IsEmpty

Menentukan apakah linked list kosong atau masih berisi data

  1. Find First

Pencaharian elemen pertama dari sebuah linked list

  1. Find Next

Pencaharian elemen sesudah elemen yang muncul sebelumnya

  1. Retrieve

Mengambil elemen yang ditunjukan

  1. Update

Menambah isi dari elemen yang ada sebelumnya

  1. Delete head

Menghapus elemen yang ditunjukan oleh head

  1. Clear

Menghapus linked list yang telah ada sebelumnya

Tinjauan Materi :

- www.infolinux.web.id

- http://herison.pinkynet.web.id/2009/05/linked-list/

- Andi, Penerbit, (2004). Pemrograman C++, Abdul Kadir, semarang.

4 komentar:

  1. Saya lagi belajar
    terima kasih

    BalasHapus
  2. min bisa gk min tunjukan cara mmbuat elemenny dengan menggunakan peritah pada linked list?
    klw min bisa nunjukanny makasih banget :)

    BalasHapus
  3. Keren gan artikelnya
    untuk artikel double linked list bisa masuk siniDouble Link List

    BalasHapus