Week 2
Nama :
Soal Review:
3. Uraikan secara singkat konsep doubly linked list! Ilustrasikan proses operasi insert dan
delete pada doubly linked list!
Doubly Linked List merupakan jenis linked list yang memiliki 2 buah pointer
(penunjuk) yaitu elemen pada elemen sebelumnya dan elemen berikutnya.
Proses insert pada doubly linked list sebagai berikut :
Baru->Next=Head->Next;
Head->Next=Baru;
Proses delete pada doubly linked list sebagai berikut :
cout<<"List Kosong"<<endl;
if(Head->Next==Tail->Next){
Data Structures
Head-> Next = NULL;
Tail->Next =NULL;
}else{
Head->Next=Hapus->Next;
}}else{
Bantu=NULL;
Bantu=Hapus;
Hapus=Hapus->Next;
if(NPMHapus==Hapus->NPM){
if(Hapus->Next==NULL){
Tail->Next=Bantu;
Bantu->Next = 0;
}else{
Bantu->Next=Hapus->Next;
}}else{
match"<<endl;
}}
Data Structures
4. Analisis kelebihan atau kekurangan singly linked list dan doubly linked list! Sebutkan
contoh program yang membutuhkan singly linked list dan doubly linked list?
Kelebihan :
1.Penambahan elemen tidak terbatas
2.Memungkinkan untuk dihapus
3.D ouble Linked Lis t memil iki 2 pointer terhadap elemen s elanjutnya
dan elemen sebelumnya.
Kekurangan :
1.Singly Linked List Hanya memiliki 1 pointer ke terhadap elemen berikutnya
2.Hanya bisa diakses sekuensial
3.Memerlukan memori yang besar untuk data yang besar juga.
5. Uraikan pengertian circular doubly linked list! Ilustrasikan proses operasi insert dan
delete pada circular doubly linked list?
Circular Doubly Linked List adalah Linked List dimana link simpul terakhir bukan
diisi dengan null, tetapi diisi dengan alamat simpul pertama yaitu simpul yang
ditunjuk oleh pointer FIRST, sehingga menciptakan efek melingkar seperti arah jarum
jam.
- Pointer RIGHT simpul paling kanan berisi alamat simpul paling kiri
- Pointer LEFT simpul paling kiri berisi alamat simpul paling kanan
new_node.next = start;
new_node.prev = last;
start = new_node;
Data Structures
Operasi delete pada Circular Doubly Linked List
if(temp != NULL) {
NoOfElements++;
temp = temp->next;
}
while(temp != *head_ref) {
NoOfElements++;
temp = temp->next;
}
if((*head_ref)->next == *head_ref) {
*head_ref = NULL;
} else {
while(temp->next != *head_ref)
temp = temp->next;
*head_ref = (*head_ref)->next;
temp->next = *head_ref;
(*head_ref)->prev = temp;
free(nodeToDelete);
}
} else {
temp = *head_ref;
for(int i = 1; i < position-1; i++)
temp = temp->next;
nodeToDelete = temp->next;
temp->next = temp->next->next;
temp->next->prev = temp;
free(nodeToDelete);
}
}
Data Structures
Soal Case:
Pak Andi memiliki sebuah toko sembako yang menjual berbagai macam kebutuhan pokok. Toko
Pak Andi mulai ramai pengunjung dan beliau mulai kewalahan dalam pencatatan stok barang,
sehingga terlambat dalam mengisi barang dagangan.
Pak Andi meminta bantuan Anda sebagai programmer untuk membuat sebuah program
sederhana yang dapat menyelesaikan permasalahan beliau.
Silakan analisa lebih dalam kebutuhan sistem dan menu apa saja yang sesuai dengan
permasalahan yang dihadapi oleh toko sembako Pak Andi, kemudian buatlah program tersebut
menggunakan konsep doubly linked list!
Analisa Program :
1. Catatan Penjualan
2. Catatan Pembelian
4. Keluar
Program akan menggunakan tipe data Double Linked List karena barang-barang yang ada di
toko Pak Andi selalu bertambah,
Data Structures