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