Linked List

Linked List adalah sebuah struktur data yang digunakan untuk menyimpan sejumlah objek data biasanya secara terurut sehingga memungkinkan penambahan, pengurangan, dan pencarian atas elemen data yang tersimpan dalam senarai dilakukan secara lebih efektif.

Terdapat 2 jenis linked list :
  • Single linked list
  • Double linke list

Single linked list
sekumpulan node yang saling terhubung dengan node lain melalui sebuah pointer. Rangkaian single linked list diawali dengan sebuah head untuk menyimpan alamat awal dan di akhiri dengan node yang mengarah ke null. Single linked list tidak dapat diakses secara langsung, melainkan harus diakses dengan maju satu per satu node, secara sequential.

Contoh penerapan single linked list pada bahasa c.


#include <stdio.h>
#include <stdlib.h>

struct data
{
 int angka;
 struct data *next;
}*head, *tail, *current;

void pushbelakang (int angka)
{
 current= (struct data*) malloc (sizeof(struct data));
 current->angka=angka;
 
 if (head==NULL)
 {
  head=tail=current;
  tail->next=NULL;
 }
 else
 {
  tail->next=current;
  tail=current;
  tail->next=NULL;
 }
 
}

void pushdepan(int angka)
{
 current= (struct data*) malloc(sizeof(struct data));
 current->angka=angka;
 if(head==NULL)
 {
  head=tail=current;
  tail->next=NULL;
 }
 else
 {
  current->next=head;
  head=current;
 }
}

void popdepan()
{
 if(head!=NULL)
 {
  current=head;
  head=head->next;
  free(current);
 }
}

void poptengah(int angka)
{
 current=head;
 if(current->angka==angka)
 {
  popdepan();
 }
 else
 {
  while(current->next->angka!= angka)
  {
   current=current->next;
  }
  struct data*temp = current->next;
  current->next=temp->next;
  free(temp);
 }
}

void cetak()
{
 current=head;
 while(current!=NULL)
 {
  printf ("%d ", current->angka) ;
  current=current->next;
 } 
}

int main ()
{
 pushdepan(20);
 pushdepan(30);
 pushbelakang(2);
 pushbelakang(90);
 pushdepan(1);
 popdepan();
 poptengah(20);
 cetak();
 getchar();
 return 0;
 
}

Double linked list

Double artinya field pointer-nya dua buah dan dua arah yang menunjuk ke node sebelum dan sesudahnya. Double linked list berguna dalam melakukan pembacaan linked list dari dua arah, yaitu dari depan (head) dan dari belakang (tail). Sebuah linked list dikatakan kosong apabila isi pointer head adalah NULL. Nilai pointer sebelum head selalu NULL, karena merupakan data pertama. Sama halnya dengan nilai pointer setelah tail juga selalu bernilai NULL sebagai penanda data terakhir.


Comments