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