Sabtu, 21 Juli 2012

Single Linked List

Single Linked List adalah terdiri dari elemen-elemen individu, dimana masing-masing dihubungkan dengan pointer   tunggal.  Masing-masing  elemen terdiri dari dua bagian, yaitu sebuah data dan sebuah pointer yang disebut dengan pointer next. Dengan menggunakan struktur two-member seperti ini, linked list dibentuk dengan cara menunjuk pointer next suatu elemen ke elemen yang mengikutinya.

Pointer next  pada elemen terakhir merupakan NULL, yang menunjukkan akhir dari suatu list.  Elemen pada awal suatu list disebut head, dan elemen terakhir dari suatu list disebut tail. untuk mengakses elemen dalam linked list, dimulai dari head dan menggunakan pointer next dari elemen selanjutnya untuk berpindah dari elemen ke elemen berikutnya sampai elemen yang diminta dicapai.Dengan single linke list, list dapat dilintasi hanya satu   arah   dari   head   ke   tail   karena   masing-masing   elemen   tidak   terdapat   link   dengan elemen sebelumnya. Sehingga, apabila kita mulai dari head dan berpindah ke beberapa elemen dan berharap dapat mengakses element sebelumnya, kita harus mulai dari head. Secara   konseptual,   linked   list   merupakan   deretan   elemen   yang   berdampingan. Akan tetapi, karena elemen-elemen tersebut dialokasikan secara dinamis bahwa  tapi kenyataannya,   linked   list   akan   terpencar- pencar   di   memory, pointer next menjamin bahwa element selanjutnya dapat diakses.
Contoh Program Single Linked List :
#include <iostream.h>
#include <conio.h>
#include <stdio.h>

typedef struct TNode{
 int data;
 TNode *next;
};

TNode *head;
TNode *bantu;
TNode *baru;

int isEmpty(){
 if(head == NULL)
    {return 1;}
 else return 0;
}

void insertDepan(int databaru){
 baru = new TNode;
 baru->data = databaru;
 baru->next = NULL;
 if(isEmpty()==1){
  head=baru;
  head->next = NULL;
 }else {
  baru->next = head;
  head = baru;
 }
 cout << "\ndatabaru masuk :::"<<head->data;
}

void insertBelakang (int databaru){
 TNode *baru,*bantu;
 baru = new TNode;
 baru->data = databaru;
 baru->next = NULL;
 if(isEmpty()==1){
  head=baru;
  head->next = NULL;
 }else {
  bantu=head;
  while(bantu->next!=NULL){
   bantu=bantu->next;
  }
  bantu->next = baru;
 }
 cout<<"Data masuk\n";
}

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<<" terhapus\n";
 } else cout<<"Masih kosong\n";
}
void hapusBelakang(){
 TNode *hapus,*bantu;
 int d;
 if (isEmpty()==0){
  if(head->next != NULL){
   bantu = head;
   while(bantu->next->next!=NULL){
    bantu = bantu->next;
   }
   hapus = bantu->next;
   d = hapus->data;
        bantu->next = NULL;
   delete hapus;
  }else{
   d = head->data;
   head = NULL;
  }
  cout<<d<<" terhapus\n";
 } else cout<<"Masih kosong\n";
}

void tampil(){
 bantu = head;
 if(isEmpty()==0){
        cout<< "\ndata yang ada dalam list\n";
  while(bantu!=NULL){
   cout<<bantu->data<<"\n";
   bantu=bantu->next;
  }
  cout<<endl;
 } else cout<<"Masih kosong\n";
}



Tidak ada komentar:

Posting Komentar