SlideShare a Scribd company logo
2
Most read
3
Most read
5
Most read
DOUBLE LINKED LIST
Sesi 6
2
Double Linked List Non Circular
• DLLNC adalah Double Linked List yang memiliki 2 buah
pointer yaitu pointer next dan prev. Pointer next menunjuk
pada node setelahnya dan pointer prev menunjuk pada
node sebelumnya.
• Pengertian:
– Double : artinya field pointer-nya dua buah dan dua
arah, ke node sebelum dan sesudahnya.
– Linked List : artinya node-node tersebut saling
terhubung satu sama lain.
– Non Circular : artinya pointer prev dan next-nya akan
menunjuk pada NULL.
3
Ilustrasi DLLNC
• Setiap node pada linked list mempunyai field yang
berisi data dan pointer ke node berikutnya & ke
node sebelumnya
• Untuk pembentukan node baru, mulanya pointer
next dan prev akan menunjuk ke nilai NULL.
• Selanjutnya pointer prev akan menunjuk ke node
sebelumnya, dan pointer next akan menunjuk ke
node selanjutnya pada list.
4
Deklarasi dan node baru DLLNC
Deklarasi node dibuat dari struct berikut ini:
typedef struct TNode{
int data;
TNode *next;
Tnode *prev;
};
Pembentukan node baru
Digunakan keyword new yang berarti mempersiapkan sebuah node baru berserta
alokasi memorinya.
TNode *baru;
baru = new TNode;
baru->data = databaru;
baru->next = NULL;
baru->prev = NULL;
5
DLLNC dengan HEAD
• Dibutuhkan satu buah variabel pointer: head
• Head akan selalu menunjuk pada node
pertama
6
DLLNC dengan HEAD
Deklarasi Pointer Penunjuk Kepala Double Linked List
• Manipulasi linked list tidak bisa dilakukan langsung ke
node yang dituju, melainkan harus melalui node pertama
dalam linked list. Deklarasinya sebagai berikut:
• TNode *head;
• Fungsi Inisialisasi Single LinkedList non Circular
• void init(){
– head = NULL;
• }
7
DLLNC dengan HEAD
Function untuk mengetahui kosong tidaknya DLLNC
• int isEmpty(){
• if(head == NULL) return 1;
• else return 0;
• }
Penambahan data di depan
• Penambahan node baru akan dikaitan di node paling depan, namun
pada saat pertama kali (data masih kosong), maka penambahan data
dilakukan pada head nya.
• Pada prinsipnya adalah mengkaitkan data baru dengan head,
kemudian head akan menunjuk pada data baru tersebut sehingga
head akan tetap selalu menjadi data terdepan. Untuk
menghubungkan node terakhir dengan node terdepan dibutuhkan
pointer bantu.
8
Fungsi Menambah Di Depan
void insertDepan(int databaru){
TNode *baru;
baru = new TNode;
baru->data = databaru;
baru->next = NULL;
baru->prev = NULL;
if(isEmpty()==1){
head=baru;
head->next = NULL;
head->prev = NULL;
}
else {
baru->next = head;
head->prev = baru;
head = baru;
}
cout<<”Data masukn”;
}
9
Ilustrasi Penambahan Node Di Depan
10
Penambahan data di belakang
• Penambahan data dilakukan di belakang, namun
pada saat pertama kali data langsung ditunjuk
pada head-nya.
• Penambahan di belakang lebih sulit karena kita
membutuhkan pointer bantu untuk mengetahui
data terbelakang, kemudian dikaitkan dengan data
baru. Untuk mengetahui data terbelakang perlu
digunakan perulangan.
11
Fungsi Penamabahan Node Di Belakang
void 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;
}
cout<<"Data masukn";
}
12
Ilustrasi Penambahan Node Di Belakang
13
Function untuk menampilkan isi DLLNC
void tampil(){
TNode *bantu;
bantu = head;
if(isEmpty()==0){
while(bantu!=NULL){
cout<<bantu->data<<" ";
bantu=bantu->next;
}
cout<<endl;
} else cout<<"Masih kosongn";
}
14
Function untuk menghapus data di depan:
void 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;
}
cout<<d<<" terhapusn";
} else cout<<"Masih kosongn";
}
15
Fungsi untuk menghapus node terbelakang
void 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;
}
cout<<d<<" terhapusn";
} else cout<<"Masih kosongn";
}
16
Ilustrasi Penghapusan Node
17
Menghapus Node Double Linked List
• 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.
18
Fungsi menghapus semua elemen
void clear(){
TNode *bantu,*hapus;
bantu = head;
while(bantu!=NULL){
hapus = bantu;
bantu = bantu->next;
delete hapus;
}
head = NULL;
}
19
Soal Latihan
• Buatlah program double linked list non circular
dengan menggunakan head, namun head yang ada
tidak digunakan untuk menyimpan data,
melainkan untuk menyimpan jumlah seluruh
elemen dalam linked list.
– Buatlah fungsi lengkap untuk tambah, hapus, lihat, dan
edit!
– Buatlah pula function untuk menampilkan data list
secara terbalik!

More Related Content

PPT
Bab 6 singly_linked_list
PPT
Bab 5 linked list
PPT
Tistrukdat8 1
PPT
Tistrukdat8 2
PPTX
Pert.5 linked list
PPT
Tugas kelompok mi d3_sore
PDF
Resume praktikum 5__linked_list
Bab 6 singly_linked_list
Bab 5 linked list
Tistrukdat8 1
Tistrukdat8 2
Pert.5 linked list
Tugas kelompok mi d3_sore
Resume praktikum 5__linked_list

What's hot (20)

PPT
Tistrukdat7
PPTX
Pertemuan V
PPT
Tistrukdat6
PDF
5 6 single-linked_list
DOCX
Laporan pemdas
PDF
Bab8.array
DOCX
Digital 1
DOCX
Bab8.array
DOCX
Materi linked list dan bubble sort
PPTX
Pertemuan vi (Function Java)
PDF
Number Systems in Computer Systems
PDF
Double linked list
PDF
Manual r
DOCX
Cara mudah menyelesaikan transformasi laplace bag 2
PDF
9.double linked list circular
PPTX
Circular linked list
DOCX
Tugas Pendahuluan Praktikum Data Mining & Warehousing Modul 1
DOCX
Tugas1
PDF
circular linked list
PPTX
12. data (variable dan list) scratch
Tistrukdat7
Pertemuan V
Tistrukdat6
5 6 single-linked_list
Laporan pemdas
Bab8.array
Digital 1
Bab8.array
Materi linked list dan bubble sort
Pertemuan vi (Function Java)
Number Systems in Computer Systems
Double linked list
Manual r
Cara mudah menyelesaikan transformasi laplace bag 2
9.double linked list circular
Circular linked list
Tugas Pendahuluan Praktikum Data Mining & Warehousing Modul 1
Tugas1
circular linked list
12. data (variable dan list) scratch
Ad

Similar to Bab 7 double_linked_list (20)

PPTX
Pertemuan 3.pptx
PDF
Pertemuan 4 revisijan2013-mhs
DOCX
DOUBLE LINKED LIST..docx
PPTX
04-STRUKDAT-LINKED LIST - Linked List adalah objek di-link atau dihubungkan y...
DOC
Modul 3 strukdat
DOCX
Stack with linked list(algodat)
PPTX
POWER POINT STRUKTUR DATA AMIK BSI PURWOKERTO
PPTX
Pemahaman dasar tentang Struktur Data Linked List dan Algoritmanya
DOCX
MAKALAH DOUBLE LINKED LIST BAHASA C.docx
PPTX
Linked list
PPTX
PPT STRUKTUR DATA(1).pptx
PPSX
Pertemuan 11 (ASD_SD 2022)- Linked List.ppsx
PPTX
SINGLE_LINKED_LIST.pptx
PPT
Salinan 2. linked-listnnnnnnnn-materi.ppt
PPTX
Linked List
PDF
Struktur Data - 4 Pointer & Linked List
PDF
Linked List dalam Struktur Data
PPTX
PPTX
PPT KELOMPOK III LINEAR SINGLY LINKED LIST.pptx
Pertemuan 3.pptx
Pertemuan 4 revisijan2013-mhs
DOUBLE LINKED LIST..docx
04-STRUKDAT-LINKED LIST - Linked List adalah objek di-link atau dihubungkan y...
Modul 3 strukdat
Stack with linked list(algodat)
POWER POINT STRUKTUR DATA AMIK BSI PURWOKERTO
Pemahaman dasar tentang Struktur Data Linked List dan Algoritmanya
MAKALAH DOUBLE LINKED LIST BAHASA C.docx
Linked list
PPT STRUKTUR DATA(1).pptx
Pertemuan 11 (ASD_SD 2022)- Linked List.ppsx
SINGLE_LINKED_LIST.pptx
Salinan 2. linked-listnnnnnnnn-materi.ppt
Linked List
Struktur Data - 4 Pointer & Linked List
Linked List dalam Struktur Data
PPT KELOMPOK III LINEAR SINGLY LINKED LIST.pptx
Ad

More from arii_manroe (10)

PPT
Bab 11 hash_table
PPT
Bab 10 tree_lanjutan
PPT
Bab 9 tree
PPT
Bab 8 rekursif
PPT
Bab 5 queue_antrian_
PPT
Bab 4 stack_tumpukan_
PPT
Bab 3 searching_array
PPT
Bab 2 sorting_array
PPT
Bab 1 abstraksi_tipe_data
PPT
Bab 12 file_manipulation
Bab 11 hash_table
Bab 10 tree_lanjutan
Bab 9 tree
Bab 8 rekursif
Bab 5 queue_antrian_
Bab 4 stack_tumpukan_
Bab 3 searching_array
Bab 2 sorting_array
Bab 1 abstraksi_tipe_data
Bab 12 file_manipulation

Recently uploaded (20)

PDF
07. Mekanisme Penyusunan RKM_Sanimas 2024 (Tahap 2).pptx.pdf
PPTX
4. PENERAPAN PENGELOLAAN SUMBER DAYA MANUSIA.pptx
PDF
03. Konsep Dasar.. Sanimas Rev.1.pptx.pdf
PPTX
20240805-ppt-pendahuluan-temef-dan-manikin.pptx
PPTX
LAPORAN ANTARA JAKSTRADA PROPINSI NTT.PPT
PPTX
PPT mssp arham muthahhari mata kuliah ms
PPTX
1 Peraturan Perundangan terkait Keselamatan Konstruksi 18.10 - Copy.pptx
PDF
13. Penyusunan RKTL TFL_PK IV Sanimas.pdf
PDF
441817878-K3-Pada-Alat-Berat.pdf pemahaman
PPTX
Ilmu Geologi pertambangan dan peran dalam industri.pptx
PPTX
Data mining mengolah informasi dan menjadikannya dasar pengambilan keputusan
PDF
01. Mengelola Risiko pada Kegiatan IBM Sanitasi.pdf
PDF
Jual GPS Topcon HiPer SR Extended Range Site Receiver
PDF
6. Sosialisasi dan .. Pembentukan KMP.pdf
PPTX
KETERAMPILAN KADER - Copy TAHUN 2024.pptx
PDF
10. MK, EWS dan Lap Fisik_Sanimas_17092024.pdf
PPTX
TUGAS Pandangan Aksiologi dalam Filsafat Ilmu.pptx
PPTX
Slide Modul 1 Pengantar SCM PELATIHAN.pptx
PPTX
Aalat Pelindung Diri_Keselamatan_Bengkel Otomotif_SMK
PPTX
Seminar Hasil Penelitian Analisis Pegas Daun
07. Mekanisme Penyusunan RKM_Sanimas 2024 (Tahap 2).pptx.pdf
4. PENERAPAN PENGELOLAAN SUMBER DAYA MANUSIA.pptx
03. Konsep Dasar.. Sanimas Rev.1.pptx.pdf
20240805-ppt-pendahuluan-temef-dan-manikin.pptx
LAPORAN ANTARA JAKSTRADA PROPINSI NTT.PPT
PPT mssp arham muthahhari mata kuliah ms
1 Peraturan Perundangan terkait Keselamatan Konstruksi 18.10 - Copy.pptx
13. Penyusunan RKTL TFL_PK IV Sanimas.pdf
441817878-K3-Pada-Alat-Berat.pdf pemahaman
Ilmu Geologi pertambangan dan peran dalam industri.pptx
Data mining mengolah informasi dan menjadikannya dasar pengambilan keputusan
01. Mengelola Risiko pada Kegiatan IBM Sanitasi.pdf
Jual GPS Topcon HiPer SR Extended Range Site Receiver
6. Sosialisasi dan .. Pembentukan KMP.pdf
KETERAMPILAN KADER - Copy TAHUN 2024.pptx
10. MK, EWS dan Lap Fisik_Sanimas_17092024.pdf
TUGAS Pandangan Aksiologi dalam Filsafat Ilmu.pptx
Slide Modul 1 Pengantar SCM PELATIHAN.pptx
Aalat Pelindung Diri_Keselamatan_Bengkel Otomotif_SMK
Seminar Hasil Penelitian Analisis Pegas Daun

Bab 7 double_linked_list

  • 2. 2 Double Linked List Non Circular • DLLNC adalah Double Linked List yang memiliki 2 buah pointer yaitu pointer next dan prev. Pointer next menunjuk pada node setelahnya dan pointer prev menunjuk pada node sebelumnya. • Pengertian: – Double : artinya field pointer-nya dua buah dan dua arah, ke node sebelum dan sesudahnya. – Linked List : artinya node-node tersebut saling terhubung satu sama lain. – Non Circular : artinya pointer prev dan next-nya akan menunjuk pada NULL.
  • 3. 3 Ilustrasi DLLNC • Setiap node pada linked list mempunyai field yang berisi data dan pointer ke node berikutnya & ke node sebelumnya • Untuk pembentukan node baru, mulanya pointer next dan prev akan menunjuk ke nilai NULL. • Selanjutnya pointer prev akan menunjuk ke node sebelumnya, dan pointer next akan menunjuk ke node selanjutnya pada list.
  • 4. 4 Deklarasi dan node baru DLLNC Deklarasi node dibuat dari struct berikut ini: typedef struct TNode{ int data; TNode *next; Tnode *prev; }; Pembentukan node baru Digunakan keyword new yang berarti mempersiapkan sebuah node baru berserta alokasi memorinya. TNode *baru; baru = new TNode; baru->data = databaru; baru->next = NULL; baru->prev = NULL;
  • 5. 5 DLLNC dengan HEAD • Dibutuhkan satu buah variabel pointer: head • Head akan selalu menunjuk pada node pertama
  • 6. 6 DLLNC dengan HEAD Deklarasi Pointer Penunjuk Kepala Double Linked List • Manipulasi linked list tidak bisa dilakukan langsung ke node yang dituju, melainkan harus melalui node pertama dalam linked list. Deklarasinya sebagai berikut: • TNode *head; • Fungsi Inisialisasi Single LinkedList non Circular • void init(){ – head = NULL; • }
  • 7. 7 DLLNC dengan HEAD Function untuk mengetahui kosong tidaknya DLLNC • int isEmpty(){ • if(head == NULL) return 1; • else return 0; • } Penambahan data di depan • Penambahan node baru akan dikaitan di node paling depan, namun pada saat pertama kali (data masih kosong), maka penambahan data dilakukan pada head nya. • Pada prinsipnya adalah mengkaitkan data baru dengan head, kemudian head akan menunjuk pada data baru tersebut sehingga head akan tetap selalu menjadi data terdepan. Untuk menghubungkan node terakhir dengan node terdepan dibutuhkan pointer bantu.
  • 8. 8 Fungsi Menambah Di Depan void insertDepan(int databaru){ TNode *baru; baru = new TNode; baru->data = databaru; baru->next = NULL; baru->prev = NULL; if(isEmpty()==1){ head=baru; head->next = NULL; head->prev = NULL; } else { baru->next = head; head->prev = baru; head = baru; } cout<<”Data masukn”; }
  • 10. 10 Penambahan data di belakang • Penambahan data dilakukan di belakang, namun pada saat pertama kali data langsung ditunjuk pada head-nya. • Penambahan di belakang lebih sulit karena kita membutuhkan pointer bantu untuk mengetahui data terbelakang, kemudian dikaitkan dengan data baru. Untuk mengetahui data terbelakang perlu digunakan perulangan.
  • 11. 11 Fungsi Penamabahan Node Di Belakang void 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; } cout<<"Data masukn"; }
  • 13. 13 Function untuk menampilkan isi DLLNC void tampil(){ TNode *bantu; bantu = head; if(isEmpty()==0){ while(bantu!=NULL){ cout<<bantu->data<<" "; bantu=bantu->next; } cout<<endl; } else cout<<"Masih kosongn"; }
  • 14. 14 Function untuk menghapus data di depan: void 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; } cout<<d<<" terhapusn"; } else cout<<"Masih kosongn"; }
  • 15. 15 Fungsi untuk menghapus node terbelakang void 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; } cout<<d<<" terhapusn"; } else cout<<"Masih kosongn"; }
  • 17. 17 Menghapus Node Double Linked List • 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.
  • 18. 18 Fungsi menghapus semua elemen void clear(){ TNode *bantu,*hapus; bantu = head; while(bantu!=NULL){ hapus = bantu; bantu = bantu->next; delete hapus; } head = NULL; }
  • 19. 19 Soal Latihan • Buatlah program double linked list non circular dengan menggunakan head, namun head yang ada tidak digunakan untuk menyimpan data, melainkan untuk menyimpan jumlah seluruh elemen dalam linked list. – Buatlah fungsi lengkap untuk tambah, hapus, lihat, dan edit! – Buatlah pula function untuk menampilkan data list secara terbalik!