1. Buat program lengkap dari potongan-potongan program yang ada diatas! Buat agar menjadi
seperti menu.
2. Buat program untuk memasukkan node baru tetapi diantara node yang sudah ada. Tentukan node
yang baru akan berada pada antrian keberapa.
3. Buatlah program untuk memasukan node baru tetapi diantara node yang sudah ada. Tentukan
node yang baru akan berada pada antrian ke berapa.
Jawab:
Double Linked List Circular adalah linked list yang memiliki 2 pointer yaitu pointer “next” dan
pointer “prev”, dimana kedua pointer tersebut menunjuk kedirinya sendiri secara circular sehingga
membentuk suatu lingkaran.
Double Linked List Circular pointer “next” dan “prev” nya menunjuk ke dirinya sendiri secara
circular.
a. Source code
#include <iostream>
#include <windows.h>
struct node{
int data;
else return 0;
baru->data = newdata;
baru->next = baru;
baru->prev = baru;
if(isEmpty()){
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;
baru->data = newdata;
baru->prev = baru;
baru->next = baru;
if(isEmpty()){
head = baru;
head->next = head;
head->prev = head;
} else {
bantu = head->prev;
bantu->next = baru;
baru->prev = bantu;
baru->next = head;
head->prev = baru;
node *bantu;
if(isEmpty()){
} else {
bantu = head;
do{
bantu = bantu->next;
}while(bantu != head);
}
void hapusDepan(){ //prosedur untuk menghapus data didepan
int a;
if(isEmpty()){
} else {
if(head->next != head){
hapus = head;
a = head->data;
bantu = head->prev;
head = head->next;
bantu->next = head;
head->prev = bantu;
delete hapus;
} else {
head = NULL;
if(isEmpty()){
} else {
if(head->next != NULL){
bantu = head->prev->prev;
hapus = head->prev;
bantu->next = head;
head->prev = bantu;
a = hapus->data;
delete hapus;
} else {
head = NULL;
baru->data = value;
baru->next = baru;
baru->prev = baru;
bantu = head;
while(bantu->data != cari){
bantu = bantu->next;
bantu2 = bantu->next;
baru->next = bantu2;
bantu2->prev = baru;
bantu->next = baru;
baru->prev = bantu;
int main()
do{
switch(pil){
case 1:
insertDepan(data);
system("pause");
system("cls");
break;
case 2:
insertBelakang(data);
system("pause");
system("cls");
break;
case 3:
tampil();
system("pause");
system("cls");
break;
case 4:
hapusDepan();
system("pause");
system("cls");
break;
case 5:
hapusBelakang();
system("pause");
system("cls");;
break;
case 6:
tambahTengah(data, cari);
system("pause");
system("cls");
break;
}while(pil != 7);
return 0;
}
b. Deskripsi code
int data;
}*head=NULL;
else return 0;
}
if(isEmpty()){
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;
}
}
void insertBelakang(int newdata){ Prosedur untuk menambahkan data
node *baru, *bantu; dibelakang.
if(isEmpty()){
head = baru;
head->next = head;
head->prev = head;
} else {
bantu = head->prev;
bantu->next = baru;
baru->prev = bantu;
baru->next = head;
head->prev = baru;
}
}
int a;
if(isEmpty()){
cout << "List Kosong";
} else {
if(head->next != head){
hapus = head;
a = head->data;
bantu = head->prev;
head = head->next;
bantu->next = head;
head->prev = bantu;
delete hapus;
} else {
head = NULL;
}
cout << a << " terhapus\n";
}
}
int a;
if(isEmpty()){
cout << "List Kosong";
} else {
if(head->next != NULL){
bantu = head->prev->prev;
hapus = head->prev;
bantu->next = head;
head->prev = bantu;
a = hapus->data;
delete hapus;
} else {
head = NULL;
}
cout << a << " terhapus\n";
}
}
baru->data = value;
baru->next = baru;
baru->prev = baru;
bantu = head;
while(bantu->data != cari){
bantu = bantu->next;
}
bantu2 = bantu->next;
baru->next = bantu2;
bantu2->prev = baru;
bantu->next = baru;
baru->prev = bantu;
switch(pil){
case 1:
cout << "Tambah
Depan\n";
cout << "Masukkan data :
"; cin >> data;
insertDepan(data);
system("pause");
system("cls");
break;
case 2:
cout << "Tambah
Belakang\n";
cout << "Masukkan data :
"; cin >> data;
insertBelakang(data);
system("pause");
system("cls");
break;
case 3:
tampil();
system("pause");
system("cls");
break;
case 4:
hapusDepan();
system("pause");
system("cls");
break;
case 5:
hapusBelakang();
system("pause");
system("cls");;
break;
case 6:
cout << "Tambah
Tengah\n";
cout << "Cari : "; cin >>
cari;
cout << "Data : "; cin >>
data;
tambahTengah(data, cari);
system("pause");
system("cls");
break;
}
}while(pil != 7);
return 0;
}
c. Screenshot