Senin, 09 Juli 2012

Single linked list Circular


   Single linked list Circular

 Salah satu jenis struktur data yang paling dasar adalah Linked List / Senarai Berantai. Linked List mempunyai beberapa variasi, dalam posting kali ini saya akan menulist 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. ntuk 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.


#include <iostream>
using namespace std;
class LinkList{
private:
struct node{
int data;
node *next;
};
node *head;

public:
LinkList();
void insertData(int num);
void deleteData (int num);
void displayData();
int count();
~LinkList();

};
LinkList::LinkList()
{
head=NULL;
}
void LinkList::insertData(int num)
{
node *temp;
node *t;
if( head == NULL)
{
head = new node;
head->data = num;
head->next = NULL;
}
else
{
temp = head;
while(temp->next != NULL)
{
temp = temp->next;
}
t = new node;
t->data = num;
t->next = NULL;
temp->next = t;
}
}
void LinkList::deleteData(int num)
{
node *q, *r;
q= head;
if(q->data == num)
{
head = q->next;
delete q;
return;
}
r = q;
while(q!= NULL)
{
if(q->data == num )
{
r->next = q->next;
delete q;
return;
}
r = q;
q = q->next;
}
cout << ” Nilai ” << num << “tidak ditemukan”;
}
void LinkList::displayData()
{
node *q;
for(q=head; q != NULL; q=q->next)
{
cout<<q->data<<endl;
}
}

int LinkList::count()
{

node *q;
int c=0;
for( q=head ; q != NULL ; q = q->next )
c++;
return c;
}

LinkList::~LinkList()
{
node *q;
if(head == NULL)
{
return;
}
while(head != NULL)
{
q = head->next;
delete head;
head = q;
}

}

int main()
{ LinkList list;
int temp;
int pilihan;
while(1)
{
cout<<”Link List Single”<<endl;
cout<<”1.Insert / Creation”<<endl;
cout<<”2.Delete Element”<<endl;
cout<<”3.View Element”<<endl;
cout<<”4.Count Element”<<endl;
cout<<”5.Exit”<<endl;

cout<<”Enter your choice:”;
cin>>pilihan;
switch(pilihan)
{  cout<<endl;
case 1:
cout<<”Insert Element Data”;
cin>>temp;
list.insertData(temp);
break;
case 2:
cout<<”Delete Element :”;
cin>>temp;
list.deleteData(temp);
break;
case 3:
list.displayData();
break;
case 4:
cout<<”Number Total Element at List : “<<list.count()<<endl;
break;
case 5:
return 0;
}

}
}

Tidak ada komentar:

Posting Komentar