double linked list - connecting repositories10 double linked list 11 stack dengan representasi list...
TRANSCRIPT
![Page 1: DOUBLE LINKED LIST - COnnecting REpositories10 Double Linked List 11 Stack dengan Representasi List 12 Queue dengan Representasi List 13 List Rekursif 14 Pohon dan Pohon Biner 15 Multi](https://reader033.vdocument.in/reader033/viewer/2022053117/609a97a213630c482c0e951a/html5/thumbnails/1.jpg)
Danang Wahyu Utomo, M.Kom, M.CS
DOUBLE LINKED LIST
Danang Wahyu Utomo
+6285 740 955 623
![Page 2: DOUBLE LINKED LIST - COnnecting REpositories10 Double Linked List 11 Stack dengan Representasi List 12 Queue dengan Representasi List 13 List Rekursif 14 Pohon dan Pohon Biner 15 Multi](https://reader033.vdocument.in/reader033/viewer/2022053117/609a97a213630c482c0e951a/html5/thumbnails/2.jpg)
Danang Wahyu Utomo, M.Kom, M.CS
RENCANA KEGIATAN PERKULIAHAN SEMESTER
W Pokok Bahasan
1 ADT Stack
2 ADT Queue
3 List Linear
4 List Linear
5 List Linear
6 Representasi Fisik List Linear
7 Variasi List Linear
8 UjianTengah Semester
W Pokok Bahasan
9 Variasi List Linear
10 Double Linked List
11 Stack dengan Representasi List
12 Queue dengan Representasi List
13 List Rekursif
14 Pohon dan Pohon Biner
15 Multi List
16 Ujian Akhir Semester
![Page 3: DOUBLE LINKED LIST - COnnecting REpositories10 Double Linked List 11 Stack dengan Representasi List 12 Queue dengan Representasi List 13 List Rekursif 14 Pohon dan Pohon Biner 15 Multi](https://reader033.vdocument.in/reader033/viewer/2022053117/609a97a213630c482c0e951a/html5/thumbnails/3.jpg)
Danang Wahyu Utomo, M.Kom, M.CS
Double Linked List
Memiliki dua buah pointer yaitu Pointer Prev dan Pointer Next
Pointer Prev mengarah ke node sebelumnya
Pointer Next mengarah ke node setelahnya
DataPointer
Next Pointer
Prevnullnull
![Page 4: DOUBLE LINKED LIST - COnnecting REpositories10 Double Linked List 11 Stack dengan Representasi List 12 Queue dengan Representasi List 13 List Rekursif 14 Pohon dan Pohon Biner 15 Multi](https://reader033.vdocument.in/reader033/viewer/2022053117/609a97a213630c482c0e951a/html5/thumbnails/4.jpg)
Danang Wahyu Utomo, M.Kom, M.CS
Double Linked List
Setiap node pada linked list memiliki data dan pointer
Inisialisasi, pointer prev dan pointer next mengarah keNULL
Selanjutnya, pointer prev mengarah ke node sebelumnyadan pointer next mengarah ke node setelahnya
nullnull 4 7 9
![Page 5: DOUBLE LINKED LIST - COnnecting REpositories10 Double Linked List 11 Stack dengan Representasi List 12 Queue dengan Representasi List 13 List Rekursif 14 Pohon dan Pohon Biner 15 Multi](https://reader033.vdocument.in/reader033/viewer/2022053117/609a97a213630c482c0e951a/html5/thumbnails/5.jpg)
Danang Wahyu Utomo, M.Kom, M.CS
Deklarasi dan Node Baru
Deklarasi Node
typedef struct Tnode{
int data;
Tnode *prev;
Tnode *next;
};
Node Baru
Tnode *baru;
baru = new Tnode;
baru->data = databaru;
baru->prev = NULL;
baru->next = NULL;
Keyword new mempersiapkan
Sebuah node baru
beserta alokasi memori
![Page 6: DOUBLE LINKED LIST - COnnecting REpositories10 Double Linked List 11 Stack dengan Representasi List 12 Queue dengan Representasi List 13 List Rekursif 14 Pohon dan Pohon Biner 15 Multi](https://reader033.vdocument.in/reader033/viewer/2022053117/609a97a213630c482c0e951a/html5/thumbnails/6.jpg)
Danang Wahyu Utomo, M.Kom, M.CS
Double Linked List dengan Head
Dibutuhkan satu buah variabel pointer : Head
Head selalu menunjuk pada node pertama
Manipulasi linked list harus melalui node pertama dalamlinked list
Tnode *head;
Inisialisasi :
head
void init(){
head=NULL;
}
nullnull 4 7 9
![Page 7: DOUBLE LINKED LIST - COnnecting REpositories10 Double Linked List 11 Stack dengan Representasi List 12 Queue dengan Representasi List 13 List Rekursif 14 Pohon dan Pohon Biner 15 Multi](https://reader033.vdocument.in/reader033/viewer/2022053117/609a97a213630c482c0e951a/html5/thumbnails/7.jpg)
Danang Wahyu Utomo, M.Kom, M.CS
Double Linked List dengan Head
Deklarasi Pointer Penunjuk Kepala Double Linked List
Tnode *head;
void init(){
head=NULL;
}
int isEmpty(){
if(head==NULL) return 1;
else return 0;
}
head
nullnull 4 7 9
![Page 8: DOUBLE LINKED LIST - COnnecting REpositories10 Double Linked List 11 Stack dengan Representasi List 12 Queue dengan Representasi List 13 List Rekursif 14 Pohon dan Pohon Biner 15 Multi](https://reader033.vdocument.in/reader033/viewer/2022053117/609a97a213630c482c0e951a/html5/thumbnails/8.jpg)
Danang Wahyu Utomo, M.Kom, M.CS
Insert Depan
Penambahan node baru dikaitkan pada node paling depan
Jika masih kosong, penambahan data dilakukan padaheadnya
Prinsipnya :
- Mengaitkan data baru dengan head
- Head menunjuk pada data baru (head selalu menjadidata terdepan)
- Untuk menghubungkan node terakhir dengan node terdepan dibutuhkan pointer bantu
![Page 9: DOUBLE LINKED LIST - COnnecting REpositories10 Double Linked List 11 Stack dengan Representasi List 12 Queue dengan Representasi List 13 List Rekursif 14 Pohon dan Pohon Biner 15 Multi](https://reader033.vdocument.in/reader033/viewer/2022053117/609a97a213630c482c0e951a/html5/thumbnails/9.jpg)
Danang Wahyu Utomo, M.Kom, M.CS
Insert DepanVoid insertDepan(int databaru){
Tnode *baru;
baru= new Tnode;
baru->data=databaru;
baru->prev=NULL;
baru->next=NULL;
if(isEmpty()==1){
head=baru;
head->prev=NULL;
head->next=NULL;
}
else{
baru->next = head;
baru->prev = baru;
head=baru;
}
printf(“Data Masuk\n”);
}
![Page 10: DOUBLE LINKED LIST - COnnecting REpositories10 Double Linked List 11 Stack dengan Representasi List 12 Queue dengan Representasi List 13 List Rekursif 14 Pohon dan Pohon Biner 15 Multi](https://reader033.vdocument.in/reader033/viewer/2022053117/609a97a213630c482c0e951a/html5/thumbnails/10.jpg)
Danang Wahyu Utomo, M.Kom, M.CS
Insert Depan
![Page 11: DOUBLE LINKED LIST - COnnecting REpositories10 Double Linked List 11 Stack dengan Representasi List 12 Queue dengan Representasi List 13 List Rekursif 14 Pohon dan Pohon Biner 15 Multi](https://reader033.vdocument.in/reader033/viewer/2022053117/609a97a213630c482c0e951a/html5/thumbnails/11.jpg)
Danang Wahyu Utomo, M.Kom, M.CS
Insert Belakang
Penambahan data dilakukan di belakang, namun padasaat pertama kali data langsung ditunjuk pada head-nya
Penambahan di belakang lebih sulit karena membutuhkanpointer bantu untuk mengetahui data paling belakang, kemudian kaitkan dengan data baru.
![Page 12: DOUBLE LINKED LIST - COnnecting REpositories10 Double Linked List 11 Stack dengan Representasi List 12 Queue dengan Representasi List 13 List Rekursif 14 Pohon dan Pohon Biner 15 Multi](https://reader033.vdocument.in/reader033/viewer/2022053117/609a97a213630c482c0e951a/html5/thumbnails/12.jpg)
Danang Wahyu Utomo, M.Kom, M.CS
Insert BelakangVoid insertBelakang(int databaru){
Tnode *baru, *bantu;baru = new Tnode;baru->data = databaru;baru->next = NULL;baru->prev = NULL;if(isEmpty()==1){
head=baru;head->next = NULL;head->prev = NULL;
}else{
bantu=head;while(bantu->next!=NULL){
bantu=bantu->next;}bantu->next = baru;baru->prev = bantu;
}}
![Page 13: DOUBLE LINKED LIST - COnnecting REpositories10 Double Linked List 11 Stack dengan Representasi List 12 Queue dengan Representasi List 13 List Rekursif 14 Pohon dan Pohon Biner 15 Multi](https://reader033.vdocument.in/reader033/viewer/2022053117/609a97a213630c482c0e951a/html5/thumbnails/13.jpg)
Danang Wahyu Utomo, M.Kom, M.CS
Insert Belakang
![Page 14: DOUBLE LINKED LIST - COnnecting REpositories10 Double Linked List 11 Stack dengan Representasi List 12 Queue dengan Representasi List 13 List Rekursif 14 Pohon dan Pohon Biner 15 Multi](https://reader033.vdocument.in/reader033/viewer/2022053117/609a97a213630c482c0e951a/html5/thumbnails/14.jpg)
Danang Wahyu Utomo, M.Kom, M.CS
Insert Belakang
![Page 15: DOUBLE LINKED LIST - COnnecting REpositories10 Double Linked List 11 Stack dengan Representasi List 12 Queue dengan Representasi List 13 List Rekursif 14 Pohon dan Pohon Biner 15 Multi](https://reader033.vdocument.in/reader033/viewer/2022053117/609a97a213630c482c0e951a/html5/thumbnails/15.jpg)
Danang Wahyu Utomo, M.Kom, M.CS
Tampilvoid tampil(){
TNode *bantu;
bantu = head;
if(isEmpty()==0){
while(bantu!=NULL){
printf(“%d “,bantu->data);
bantu=bantu->next;
}
printf(“\n”);
} else printf("Masih kosong\n“);
}
![Page 16: DOUBLE LINKED LIST - COnnecting REpositories10 Double Linked List 11 Stack dengan Representasi List 12 Queue dengan Representasi List 13 List Rekursif 14 Pohon dan Pohon Biner 15 Multi](https://reader033.vdocument.in/reader033/viewer/2022053117/609a97a213630c482c0e951a/html5/thumbnails/16.jpg)
Danang Wahyu Utomo, M.Kom, M.CS
Hapus Node
Tidak diperlukan pointer bantu yang mengikuti pointer hapus yang berguna untuk menunjuk ke NULL
Karena pointer hapus sudah bisa menunjuk ke pointer sebelumnya dengan menggunakan elemen prev ke node sebelumnya, yang akan diset agar menunjuk ke NULL setelah penghapusan dilakukan
![Page 17: DOUBLE LINKED LIST - COnnecting REpositories10 Double Linked List 11 Stack dengan Representasi List 12 Queue dengan Representasi List 13 List Rekursif 14 Pohon dan Pohon Biner 15 Multi](https://reader033.vdocument.in/reader033/viewer/2022053117/609a97a213630c482c0e951a/html5/thumbnails/17.jpg)
Danang Wahyu Utomo, M.Kom, M.CS
Hapus Node Depanvoid hapusDepan (){
Tnode *hapus;
int d;
if (isEmpty()==0){
if(head->next != NULL){
hapus = head;
d = hapus->data;
head = head->next;
head->prev = NULL;
delete hapus;
} else {
d = head->data;
head = NULL;
}
}
}
![Page 18: DOUBLE LINKED LIST - COnnecting REpositories10 Double Linked List 11 Stack dengan Representasi List 12 Queue dengan Representasi List 13 List Rekursif 14 Pohon dan Pohon Biner 15 Multi](https://reader033.vdocument.in/reader033/viewer/2022053117/609a97a213630c482c0e951a/html5/thumbnails/18.jpg)
Danang Wahyu Utomo, M.Kom, M.CS
Hapus Node Depan
![Page 19: DOUBLE LINKED LIST - COnnecting REpositories10 Double Linked List 11 Stack dengan Representasi List 12 Queue dengan Representasi List 13 List Rekursif 14 Pohon dan Pohon Biner 15 Multi](https://reader033.vdocument.in/reader033/viewer/2022053117/609a97a213630c482c0e951a/html5/thumbnails/19.jpg)
Danang Wahyu Utomo, M.Kom, M.CS
Hapus Node Belakangvoid hapusBelakang(){
Tnode *hapus;
int d;
if (isEmpty()==0){
if(head->next != NULL){
hapus = head;
while(hapus->next!=NULL){
hapus = hapus->next;
}
d = hapus->data;
hapus->prev->next = NULL;
delete hapus;
} else {
d = head->data;
head = NULL;
}
}
}
![Page 20: DOUBLE LINKED LIST - COnnecting REpositories10 Double Linked List 11 Stack dengan Representasi List 12 Queue dengan Representasi List 13 List Rekursif 14 Pohon dan Pohon Biner 15 Multi](https://reader033.vdocument.in/reader033/viewer/2022053117/609a97a213630c482c0e951a/html5/thumbnails/20.jpg)
Danang Wahyu Utomo, M.Kom, M.CS
Hapus Node Belakang
![Page 21: DOUBLE LINKED LIST - COnnecting REpositories10 Double Linked List 11 Stack dengan Representasi List 12 Queue dengan Representasi List 13 List Rekursif 14 Pohon dan Pohon Biner 15 Multi](https://reader033.vdocument.in/reader033/viewer/2022053117/609a97a213630c482c0e951a/html5/thumbnails/21.jpg)
Danang Wahyu Utomo, M.Kom, M.CS
Hapus Semua Nodevoid clear(){
TNode *bantu,*hapus;
bantu = head;
while(bantu!=NULL){
hapus = bantu;
bantu = bantu->next;
delete hapus;
}
head = NULL;
}
![Page 22: DOUBLE LINKED LIST - COnnecting REpositories10 Double Linked List 11 Stack dengan Representasi List 12 Queue dengan Representasi List 13 List Rekursif 14 Pohon dan Pohon Biner 15 Multi](https://reader033.vdocument.in/reader033/viewer/2022053117/609a97a213630c482c0e951a/html5/thumbnails/22.jpg)
Danang Wahyu Utomo, M.Kom, M.CS
Double Linked List dengan Head & Tail
Dibutuhkan dua buah variabel pointer : Head dan Tail
Head akan selalu menunjuk pada node pertama
Tail akan selalu menunjuk pada node terakhir
TailHead
4 7 9
![Page 23: DOUBLE LINKED LIST - COnnecting REpositories10 Double Linked List 11 Stack dengan Representasi List 12 Queue dengan Representasi List 13 List Rekursif 14 Pohon dan Pohon Biner 15 Multi](https://reader033.vdocument.in/reader033/viewer/2022053117/609a97a213630c482c0e951a/html5/thumbnails/23.jpg)
Danang Wahyu Utomo, M.Kom, M.CS
Double Linked List dengan Head & Tail
InisialisasiTnode *head, *tail;
Fungsi Inisialisasi Double Linked Listvoid init(){
head=NULL;
tail=NULL;
}
Fungsi untuk mengetahui list kosongint isEmpty(){
if(tail==NULL) return 1;
else return 0;
}
![Page 24: DOUBLE LINKED LIST - COnnecting REpositories10 Double Linked List 11 Stack dengan Representasi List 12 Queue dengan Representasi List 13 List Rekursif 14 Pohon dan Pohon Biner 15 Multi](https://reader033.vdocument.in/reader033/viewer/2022053117/609a97a213630c482c0e951a/html5/thumbnails/24.jpg)
Danang Wahyu Utomo, M.Kom, M.CS
Insert Depan dengan Head & Tail
![Page 25: DOUBLE LINKED LIST - COnnecting REpositories10 Double Linked List 11 Stack dengan Representasi List 12 Queue dengan Representasi List 13 List Rekursif 14 Pohon dan Pohon Biner 15 Multi](https://reader033.vdocument.in/reader033/viewer/2022053117/609a97a213630c482c0e951a/html5/thumbnails/25.jpg)
Danang Wahyu Utomo, M.Kom, M.CS
Insert Depan dengan Head & Tail
![Page 26: DOUBLE LINKED LIST - COnnecting REpositories10 Double Linked List 11 Stack dengan Representasi List 12 Queue dengan Representasi List 13 List Rekursif 14 Pohon dan Pohon Biner 15 Multi](https://reader033.vdocument.in/reader033/viewer/2022053117/609a97a213630c482c0e951a/html5/thumbnails/26.jpg)
Danang Wahyu Utomo, M.Kom, M.CS
Insert Depan dengan Head & Tailvoid insertDepan (int databaru){
Tnode *baru;
baru = new Tnode;
baru->data = databaru;
baru->next = NULL;
baru->prev = NULL;
if(isEmpty()==1){
head=baru;
tail=head;
head->next = NULL;
head->prev = NULL;
tail->prev = NULL;
tail->next = NULL;
}
else {
baru->next = head;
head->prev = baru;
head = baru;
}
}
![Page 27: DOUBLE LINKED LIST - COnnecting REpositories10 Double Linked List 11 Stack dengan Representasi List 12 Queue dengan Representasi List 13 List Rekursif 14 Pohon dan Pohon Biner 15 Multi](https://reader033.vdocument.in/reader033/viewer/2022053117/609a97a213630c482c0e951a/html5/thumbnails/27.jpg)
Danang Wahyu Utomo, M.Kom, M.CS
Insert Belakang dengan Head & Tail
![Page 28: DOUBLE LINKED LIST - COnnecting REpositories10 Double Linked List 11 Stack dengan Representasi List 12 Queue dengan Representasi List 13 List Rekursif 14 Pohon dan Pohon Biner 15 Multi](https://reader033.vdocument.in/reader033/viewer/2022053117/609a97a213630c482c0e951a/html5/thumbnails/28.jpg)
Danang Wahyu Utomo, M.Kom, M.CS
Insert Belakang dengan Head & Tail
![Page 29: DOUBLE LINKED LIST - COnnecting REpositories10 Double Linked List 11 Stack dengan Representasi List 12 Queue dengan Representasi List 13 List Rekursif 14 Pohon dan Pohon Biner 15 Multi](https://reader033.vdocument.in/reader033/viewer/2022053117/609a97a213630c482c0e951a/html5/thumbnails/29.jpg)
Danang Wahyu Utomo, M.Kom, M.CS
Insert Belakang dengan Head & Tail
![Page 30: DOUBLE LINKED LIST - COnnecting REpositories10 Double Linked List 11 Stack dengan Representasi List 12 Queue dengan Representasi List 13 List Rekursif 14 Pohon dan Pohon Biner 15 Multi](https://reader033.vdocument.in/reader033/viewer/2022053117/609a97a213630c482c0e951a/html5/thumbnails/30.jpg)
Danang Wahyu Utomo, M.Kom, M.CS
Insert Belakang dengan Head & Tailvoid insertBelakang(int databaru){
Tnode *baru;
baru = new Tnode;
baru->data = databaru;
baru->next = NULL;
baru->prev = NULL;
if(isEmpty()==1){
head=baru;
tail=head;
head->next = NULL;
head->prev = NULL;
tail->prev = NULL;
tail->next = NULL;
}
else {
tail->next = baru;
baru->prev = tail;
tail = baru;
tail->next = NULL;
}
}
![Page 31: DOUBLE LINKED LIST - COnnecting REpositories10 Double Linked List 11 Stack dengan Representasi List 12 Queue dengan Representasi List 13 List Rekursif 14 Pohon dan Pohon Biner 15 Multi](https://reader033.vdocument.in/reader033/viewer/2022053117/609a97a213630c482c0e951a/html5/thumbnails/31.jpg)
Danang Wahyu Utomo, M.Kom, M.CS
Hapus Node Depanvoid hapusDepan(){
Tnode *hapus;
int d;
if (isEmpty()==0){
if(head->next != NULL){
hapus = head;
d = hapus->data;
head = head->next;
head->prev = NULL;
delete hapus;
} else {
d = head->data;
head = NULL;
tail = NULL;
}
cout<<d<<" terhapus\n";
} else cout<<"Masih kosong\n";
}
![Page 32: DOUBLE LINKED LIST - COnnecting REpositories10 Double Linked List 11 Stack dengan Representasi List 12 Queue dengan Representasi List 13 List Rekursif 14 Pohon dan Pohon Biner 15 Multi](https://reader033.vdocument.in/reader033/viewer/2022053117/609a97a213630c482c0e951a/html5/thumbnails/32.jpg)
Danang Wahyu Utomo, M.Kom, M.CS
Hapus Node Belakangvoid hapusBelakang(){
Tnode *hapus;
int d;
if (isEmpty()==0){
if(head->next != NULL){
hapus = tail;
d = tail->data;
tail = tail->prev;
tail->next = NULL;
delete hapus;
} else {
d = head->data;
head = NULL;
tail = NULL;
}
cout<<d<<" terhapus\n";
} else cout<<"Masih kosong\n";
}
![Page 33: DOUBLE LINKED LIST - COnnecting REpositories10 Double Linked List 11 Stack dengan Representasi List 12 Queue dengan Representasi List 13 List Rekursif 14 Pohon dan Pohon Biner 15 Multi](https://reader033.vdocument.in/reader033/viewer/2022053117/609a97a213630c482c0e951a/html5/thumbnails/33.jpg)
Danang Wahyu Utomo, M.Kom, M.CS
Hapus Semua Nodevoid clear(){
Tnode *bantu,*hapus;
bantu = head;
while(bantu!=NULL){
hapus = bantu;
bantu = bantu->next;
delete hapus;
}
head = NULL;
tail = NULL;
}