Double Linked List Circular adalah linked list dengan menggunakan pointer, dimana setiap node memiliki 3 field, yaitu 1 field pointer yang menunjuk pointer berikutnya(next), 1 field menunjuk pointer sebelumnya (prev), serta sebuah field yang berisi data untuk node tersebut.
Double Linked List Circular pointer next dan prev nya menunjuk ke dirinya sendiri secara circular.
Pengertian:
Double : artinya field pointer-nya terdiri dari dua buahdan dua arah, yaitu prev dan next
Linked List : artinya node-node tersebut salingterhubung satu sama lain.
Circular : artinya pointer next dan prev-nya menunjuk kedirinya sendiri.

Dengan Head
• Menggunakan 1 pointer head
• Head selalu menunjuk node pertama
Sebelumnya kita harus mendeklarasikan dulu pointer head :
TNode *head;
Setelah kita mendeklarasikan pointer head, kita belum bisa secara langsung mendeklarasikan node yang dituju. Sehingga pointer head harus dibuat bernilai null terlebih dahulu :
head = NULL;
Untuk mengetahui apakah suatu Linked List kosong atau tidak, kita dapat mengetahuinya dengan mengecek nilai dari pointer Head-nya.
Contoh program :
• Penambahan di depan
void tambahdata (int databaru){
TNode *baru,*bantu;
//pointer bantu digunakan untuk menunjuk node terakhir (head->prev)
baru = new TNode;
baru -> data = databaru;
baru -> next = baru;
baru -> prev = baru;
if (isEmpty()==1) {
head=baru;
head->next=head;
head->prev=head;
}
else {
bantu=head->prev;
baru->next=head;
head->prev=baru;
head=baru;
head->prev=bantu;
bantu->next=head;
}
printf(”data masuk”);
}
• Penambahan di belakang
void insertBelakang (int databaru){
TNode *baru,*bantu;
baru = new TNode;
baru->data = databaru;
baru->next = baru;
baru->prev = baru;
if(isEmpty()==1){
head=baru;
head->next = head;
head->prev = head;
}
else {
bantu=head->prev;
bantu->next = baru;
baru->prev = bantu;
baru->next = head;
head->prev = baru;
}
printf(”data masuk”);
}
• Tampil
void tampil(){
TNode *bantu;
bantu = head;
if(isEmpty()==0){
do{
printf(“%i ”,Bantu->data);
bantu=bantu->next;
}while(bantu!=head);
printf(“\n”);
} else printf(“masih Kosong”);cout<<"Masih kosong\n"; } • Hapus di depan void hapusDepan (){ TNode *hapus,*bantu; int d; if (isEmpty()==0){ if(head->next != head){
hapus = head;
d = hapus->data;
bantu = head->prev;
head = head->next;
bantu->next = head;
head->prev = bantu;
delete hapus;
} else {
d = head->data;
head = NULL;
}
printf(“%i terhapus”,d);
} else printf(“Masih kosong\n”);
}
• Hapus di belakang
void hapusBelakang(){
TNode *hapus,*bantu;
int d;
if (isEmpty()==0){
if(head->next != head){
bantu = head;
while(bantu->next->next != head){
bantu = bantu->next;
}
hapus = bantu->next;
d = hapus->data;
bantu->next = head;
delete hapus;
} else {
d = head->data;
head = NULL;
}
printf(“%i terhapus\n”,d);
} else printf(“Masih Kosong”);
}
B. Double Linked List Non Circular (DLLNC)
DLLNC adalah sebuah Linked List yang terdiri dari dua arah pointer, dengan node yang saling terhubung, namun kedua pointernya menunjuk ke NULL.
Setiap node pada linked list mempunyai field yang berisi data dan pointer yang saling berhubungan dengan node yang lainnya.
Gambaran Node DLLNC

Deklarasi Node
typedef struct TNode
{
int data;
TNode *next;
TNode *prev;
}
C. Single linked list Circular
SLLC adalah Single Linked List yang pointer nextnya menunjuk pada dirinya sendiri. Jika Single Linked List tersebut terdiri dari beberapa node, maka pointer next pada node terakhir akan menunjuk ke node terdepannya.
Pengertian:
Single : artinya field pointer-nya hanya satu buah saja dan satu arah.
Linked List : artinya node-node tersebut saling terhubung satu sama lain.
Circular : artinya pointer next-nya akan menunjuk pada dirinya sendiri sehingga berputar

Ilustrasi Penggunaan Single Linked List Circular

Setiap node pada linked list mempunyai field yang berisi pointer ke node berikutnya, dan juga memiliki field yang berisi data.
Pada akhir linked list, node terakhir akan menunjuk ke node terdepan sehingga linked list tersebut berputar.
D. Single linked list Non Circular
Pengertian:
Single : artinya field pointer-nya hanya satu buah saja dan satu arah serta pada akhir node, pointernya menunjuk NULL
Linked List : artinya node-node tersebut saling terhubung satu sama lain.
E. Tambah list di depan(LIFO), tengah, belakang(FIFO).
Dengan pengertiannya merupakan linked list yang nodenya atau elemenya hanya dapat dimasukan dan dihapus dari paling atas.
Sebagai contoh dalam sehari – hari , seperti :
Apabila kita memasukan kerikil atau batu ke dalam botol maka yang
terakhir masuk merupakan batu yang akan keluar paling pertama.
Dalam persediaan beras digudang, beras yang pertama masuk maka aka
disimpan paling bawah dan yang terakhir masuk maka akan disimpan
paling atas. Maka untuk mengambil beras akan di ambil dari yang atas
terlebih dahulu karena apabila dari bawah yang akan terjadi adalah
berantakan.
F. Hapus List di depan, tengah,belakang, dan semua
Untuk Download Artikel Klik Gambar
Tidak ada komentar:
Posting Komentar