SlideShare una empresa de Scribd logo
1 de 25
Descargar para leer sin conexión
Doubly Linked List
Akmal, S.Si, MT
Mata Kuliah : Struktur Data
Tujuan
 Mahasiswa dapat : Mengoperasikan dan
membuat program semua algoritma
primitive list pada variasi list (doubly dan
sirkular) dengan benar
Pokok Bahasan
 Operasi Traversal List doubly
 Menambah di depan, belakang dan tengah
 Menghapus di depan, belakang dan tengah
 Variasi List Berkepala
 Variasi List Circular)
Pengertian List Berkait Doubly
 Doubly Linked List atau List berkait double adalah suatu bentuk tipe data
abstrak yang merupakan kumpulan dari data berbentuk record dengan ciri
setiap elemen data (record) memiliki karakteristik:
 Ada informasi (info)
 Ada 2 buah pengait (pointer) yaitu :
 antara satu elemen dengan elemen yang berikutnya (next)
 antara satu elemen dengan elemen yang sebelumnya (prev)
A B C D
First
prev next
Pendeklarasian tipe struktur list berkait doubly
struct namaRecord {
tipe1 info1; //info
. . . . . . .
namaRecord* namaPointer; //namaPointer sbg pengait 1
namaRecord* namaPointer; //namaPointer sbg pengait 2
};
typedef namaRecord* pointer; //membuat tipe alias pointer
typedef pointer List; //membuat alias List
Contoh :
struct ElemtList {
char info;
ElemtList* next;
ElemtList* prev;
};
typedef ElemtList* pointer;
typedef pointer List;
Operasi Pada List Berkait Doubly
Operasi dasar itu pada doubly linked list pada dasarnya hampir sama dengan
singly linked list yaitu :
 Penyisipan/Insert
 Penyisipan bisa dilakukan di depan (Insert First), di belakang (Insert Last) dan di
tengah (Insert After dan Insert Before )
 Penghapusan/Delete
 Penghapusan bisa dilakukan di depan (Delete First), di belakang (Delete Last)
dan di tengah (Delete After, Delete Before dan DeletePCari)
 Penelusuran beruntun Linked List/Traversal
 Mengunjungi semua elemen list dan biasanya dimulai dari elemen pertama
 Sama dengan Singly linked list
 Pencarian elemen list/Searching
 Melakukan searching berdasarkan suatu kunci untuk mencari apakah data yang
diinginkan ada dalam list dan sekaligus untuk mendapatkan alamat dari elemen
yang dicari.
 Sama dengan Singly Linked list
Create List dan Create Elemen
void CreateList(List& First) {
First = NULL;
}
Adapun langkah-langkah yang dilakukan dalam create Element adalah:
 alokasi suatu tempat yang dicatat oleh pointer pBaru
 Mengisi Info
 Memberi nilai NULL pada pointer pengait (next)
 Memberi nilai NULL pada pointer pengait (prev)
void createElement(pointer& pBaru) {
pBaru = new ElemtList;
cin >> pBaru->info;
pBaru->next = NULL;
pBaru->prev = NULL;
}
Insert First Doubly
Insert First pada list doubly adalah proses penyisipan sebuah
elemen list ke dalam sebuah list dimana penyisipan dilakukan di
depan.
Secara umum langkah-langkah untuk operasi Insert First doubly
adalah
a. Menciptakan elemen baru (Create Element)
b. Menambahkan elemen baru tersebut ke list dengan cara
 Menambah sebuah elemen list baru di awal list atau di depan.
 Elemen baru tersebut menjadi elemen pertama dan di catat oleh
pengenal list
Ada 2 kasus yang harus ditangani yaitu :
 Jika list masih kosong
 Jika list sudah ada isi
Insert First Doubly
 Kasus kosong
 Kasus ada isi
A
First
A
First
pBaru pBaru
A
B C D
First
A B C D
First
pBaru
1
2
3
Fungsi Insert First Doubly
void insertFirstDoubly(List& First, pointer pBaru){
// I.S List First mungkin kosong dan pBaru sudah
// terdefinisi
// F.S List bertambah satu elemen didepan dengan pBaru
if (First==NULL) // kasus kosong
First=pBaru;
else { // kasus ada isi
pBaru->next=First; // 1
First -> prev = pbaru; // 2
First=pBaru; // 3
}
}
Insert Last Doubly
 Insert Last Doubly adalah proses penyisipan sebuah elemen list ke
dalam sebuah list dimana penyisipan dilakukan di belakang.
 Secara umum langkah-langkah untuk operasi Insert Last adalah
sama seperti Insert First yaitu:
a. Menciptakan elemen baru (Create Element)
b. Menambahkan elemen baru tersebut ke list dengan cara
 Menambah sebuah elemen list baru di akhir list atau di belakang.
 Elemen baru tersebut menjadi elemen terakhir yang memiliki nilai next
nya adalah NULL.
Ada 2 kasus yang harus ditangani yaitu :
 Jika list masih kosong (sama seperti Insert First)
 Jika list sudah ada isi
Insert Last Doubly
Kasus list ada isi :
 Langkah-langkah yang dilakukan adalah :
1. Menemukan / mencari elemen terakhir dengan ciri yaitu elemen yang
next-nya bernilai NULL. Pemeriksaan dilakukan mulai dari elemen
pertama. Selanjutnya akan diperiksa elemen-elemen yang next-nya
bernilai NULL. Gunakan pointer bantuan (last) untuk mencatat elemen
terakhir tersebut.
A B C D
First
last
1
pBaru
Insert Last Doubly
2. Sambungkan elemen terakhir yang dicatat oleh last dengan elemen
yang ditunjuk oleh pBaru
2. last  next = pbaru;
3. pbaru  prev = last;
A B C D
First
last
2
3
pBaru
Fungsi InsertLast Doubly
void InsertLastDoubly(List& First, pointer pBaru){
// I.S List First mungkin kosong dan pBaru sudah
// terdefinisi
// F.S List bertambah dibelakang (pBaru sesudah last)
pointer last; // last untuk mencatat elemen terakhir
cout<<"Insert Last"<<endl;
if (First==NULL){ //kosong
First=pBaru;
}
else { // ada isi
last=First;
while (last->next!=NULL){
last=last->next;
}
last->next=pBaru; // sambungkan
pBaru->prev = last;
}
}
Insert After Doubly / Penyisipan Di Tengah
 Insert After doubly adalah primitif untuk menambah sebuah elemen list
baru setelah elemen tertentu pada list berkait doubly.
 Langkah-langkah penyisipan :
 1. Temukan suatu elemen (Searching) dimana elemen yang baru akan
disisipkan sesudah elemen tersebut.
 2. Jika ditemukan, maka ada 2 kasus yang mungkin terjadi yaitu
 Elemen yang dicari berada di belakang sehingga akan terjadi penyisipan di
belakang (insert Last )
 Elemen yang dicari berada di tengah sehingga elemen yang baru akan berada
diantara 2 buah elemen (di tengah)
A B D
C
First
pCari
pBaru
12 1. pBaru ->next=pCari ->next
4. pCari ->next = pBaru
2. pBaru->prev = pCari
3. pBaru->next->prev=pBaru
4
3
Insert Before Doubly / Penyisipan Di Tengah
 Insert Before doubly adalah primitif untuk menambah sebuah elemen list baru
sebelum elemen tertentu pada list berkait doubly.
Langkah-langkah penyisipan :
 1. Temukan suatu elemen (Searching) dimana elemen yang baru akan disisipkan
sesudah elemen tersebut.
 2. Jika ditemukan, maka ada 2 kasus yang mungkin terjadi yaitu
 Elemen yang dicari berada di awal list sehingga akan terjadi penyisipan di depan (insert First )
 Elemen yang dicari berada di tengah sehingga elemen yang baru akan berada diantara 2 buah
elemen (di tengah)
1. pBaru next = pCari;
2. pBaru prev = pCari  prev;
3. pCari prev  next = pBaru;
4. pCari prev = pBaru;
A B D
C
First
pCari
pBaru
2 3
4
1
Delete First Doubly / Penghapusan Di Depan
 Merupakan penghapusan sebuah elemen yang ada di depan. Elemen List yang akan dihapus adalah
elemen yang dicatat / ditunjuk oleh First
Secara umum ada 3 kasus yang perlu ditangani untuk operasi Delete First yaitu:
a. Kasus List kosong
b. Kasus List dengan isi 1 eleme
c. Kasus List dengan isi lebih dari 1 elemen
 Menghapus elemen yang depan / pertama yang alamatnya dicatat oleh First,, sehingga list
akan berkurang 1 elemen.
 Setelah elemen tersebut dihapus maka elemen berikutnya menjadi elemen pertama yang di
tunjuk oleh First
1. pHapus = First
2. First=First->next
3. pHapus->next=NULL
4. First->prev=NULL
A B C D
First
pHapus
1
2
3
4
Delete Last Doubly / Penghapusan Di Belakang
 Merupakan penghapusan sebuah elemen yang ada di belakang. Elemen List yang
akan dihapus adalah elemen yang nextnya bernilai NULL.
Secara umum ada 3 kasus yang perlu ditangani untuk operasi Delete Last yaitu:
a. Kasus List kosong
b. Kasus List dengan isi 1 elemen
c. Kasus List dengan isi lebih dari 1 elemen
 Menemukan / mencari elemen terakhir dengan ciri yaitu elemen yang next-
nya bernilai NULL dengan menggunakan pointer bantuan (last)
 Tidak perlu precLast untuk penghapusan elemen terakhir
1. pHapus = last
2. last->prev->next = NULL
3. pHapus->prev = NULL
A B C D
First
pHapus
1
2
3
last
Delete After Doubly / Penghapusan Di Tengah
 Menghapus sebuah elemen list setelah elemen tertentu
Langkah-langkah penghapusan :
1. Temukan suatu elemen dimana elemen yang akan dihapus berada sesudah elemen
tersebut.
2. Jika ditemukan, maka ada 3 kasus yang mungkin terjadi yaitu
a. Elemen yang dicari (pCari) berada di belakang sehingga tidak ada yang akan dihapus sesudah
pCari tersebut.
b. pCari menunjuk elemen sebelum yang terakhir maka akan dilakukan penghapusan di belakang
(delete Last)
c. pCari berada pada selain a dan b.
 pHapus adalah elemen sesudah pCari
 lepaskan kaitan antara yang ditunjuk oleh pCari dengan yang akan dihapus
 putuskan kaitan antara yang ditunjuk oleh pHapus dengan elemen sesudahnya
1. pHapus = pCari next
2. pCari next = pHapus next
3. pHapus next  prev = pCari
4. pHapus  next = NULL
5. pHapus  prev = NULL
A B C D
First
pCari
pHapus
2
1
3
4
5
Delete Before Doubly / Penghapusan Di Tengah
 Menghapus sebuah elemen list sebelum elemen tertentu
Langkah-langkah penghapusan :
1. Temukan suatu elemen dimana elemen yang akan dihapus berada sebelum elemen tersebut.
2. Jika ditemukan, maka ada 3 kasus yang mungkin terjadi yaitu
a. Elemen yang dicari (pCari) berada di depan sehingga tidak ada yang akan dihapus sebelum pCari tersebut.
b. pCari menunjuk elemen sesudah First (yang kedua) maka akan dilakukan penghapusan di depan (delete
First)
c. pCari berada pada selain a dan b.
 pHapus adalah elemen sebelum pCari
 lepaskan kaitan antara yang ditunjuk oleh sebelum pHapus dengan yang akan dihapus
 putuskan kaitan antara yang ditunjuk oleh pHapus dengan elemen sesudahnya
1. pHapus = pCari  prev
2. pHapus  prev  next = pCari
3. pCari  prev = pHapus  prev
4. pHapus  next = NULL
5. pHapus  prev = NULL
A B C D
First
pCari
pHapus
2
1
3
4
5
Delete pCari / Penghapusan Di Tengah
Menghapus sebuah elemen list yang dicari
Langkah-langkah penghapusan :
1. Temukan suatu elemen dimana elemen yang yang akan dihapus adalah elemen itu sendiri.
2. Jika ditemukan, maka ada 3 kasus yang mungkin terjadi yaitu
a. Elemen yang dicari (pCari) berada di depan (== First), maka dilakukan penghapusan di depan
(deleteFirst)
Memiliki 2 buah sub kasus yaitu :
List isinya 1 elemen
List isinya lebih dari 1 elemen
b. Elemen yang dicari berada di belakang maka akan dilakukan penghapusan di belakang (delete Last)
c. pCari berada diantara 2 buah elemen ( selain a dan b ).
 pHapus adalah elemen yang ditunjuk oleh pCari
 lepaskan kaitan antara yang ditunjuk oleh sebelum pHapus dengan yang akan dihapus
 putuskan kaitan antara yang ditunjuk oleh pHapus dengan elemen sesudahnya
1. pHapus = pCari
2. pCariprev next = pCari next
3. pCari next  prev = pCari  prev
4. pCari  next = NULL
5. pCari  prev = NULL
A B C D
First
pCari
pHapus
2
1
3
4
5
List Sirkular Singly
 List circular dg isi lebih dari 1 elemen
Kosong isi 1 elemen
First
A
First
A B C D
First
List Sirkular Doubly
List circular dg isi lebih dari 1 elemen
Kosong isi 1 elemen
A B C D
First
First
A
First
Latihan dan Tugas
1. a. Buatlah Fungsi Insert Last untuk suatu struktur data berbentuk Circular Doubly
Linked List. Berikan gambaran logic keadaan listnya (Keadaan awal dan Akhir)
b. Buatlah Fungsi Delete Last untuk suatu struktur data berbentuk Circular
Doubly Linked List. Berikan gambaran logic keadaan listnya (Keadaan awal dan
Akhir)
2. a. Buatlah Fungsi Insert First untuk suatu struktur data berbentuk Circular
Doubly Linked List. Berikan gambaran logic keadaan listnya (Keadaan awal dan
Akhir)
b. Buatlah Fungsi Delete First untuk suatu struktur data berbentuk Circular
Doubly Linked List. Berikan gambaran logic keadaan listnya (Keadaan awal dan
Akhir)
3. Buatlah program lengkap semua primitive list doubly linked list dengan pengelolaan
menggunakan suatu menu. Kasus list yang ditangani adalah list pegawai dengan
atribut NIP, nama, alamat, gol, dan gaji


Más contenido relacionado

La actualidad más candente

Kisi kisi uas struktur data
Kisi kisi uas struktur dataKisi kisi uas struktur data
Kisi kisi uas struktur data
Dwi Mardianti
 
Struktur data 05 (bs avl tree)
Struktur data 05 (bs avl tree)Struktur data 05 (bs avl tree)
Struktur data 05 (bs avl tree)
Sunarya Marwah
 
Array searching sorting_pert_11,12,13,14,15
Array searching sorting_pert_11,12,13,14,15Array searching sorting_pert_11,12,13,14,15
Array searching sorting_pert_11,12,13,14,15
doudomblogspot
 
Aljabar boolean MK matematika diskrit
Aljabar boolean MK matematika diskritAljabar boolean MK matematika diskrit
Aljabar boolean MK matematika diskrit
riyana fairuz kholisa
 

La actualidad más candente (20)

Soal uas struktur data
Soal uas struktur dataSoal uas struktur data
Soal uas struktur data
 
Kisi kisi uas struktur data
Kisi kisi uas struktur dataKisi kisi uas struktur data
Kisi kisi uas struktur data
 
Algoritma dan Struktur Data - Binary Search
Algoritma dan Struktur Data - Binary SearchAlgoritma dan Struktur Data - Binary Search
Algoritma dan Struktur Data - Binary Search
 
Tugas mandiri struktur data
Tugas mandiri struktur dataTugas mandiri struktur data
Tugas mandiri struktur data
 
Graf Pohon
Graf PohonGraf Pohon
Graf Pohon
 
Linked List
Linked ListLinked List
Linked List
 
Struktur Data Tree
Struktur Data TreeStruktur Data Tree
Struktur Data Tree
 
Pengertian dan Representasi Graph
Pengertian dan Representasi GraphPengertian dan Representasi Graph
Pengertian dan Representasi Graph
 
Contoh soal uts struktur data
Contoh soal uts struktur dataContoh soal uts struktur data
Contoh soal uts struktur data
 
Matematika Diskrit kombinatorial
Matematika Diskrit  kombinatorialMatematika Diskrit  kombinatorial
Matematika Diskrit kombinatorial
 
Struktur data 05 (bs avl tree)
Struktur data 05 (bs avl tree)Struktur data 05 (bs avl tree)
Struktur data 05 (bs avl tree)
 
Sistem berkas
Sistem berkasSistem berkas
Sistem berkas
 
4.2. Operasi Dasar Singly Linked List 2 (primitive list)
4.2. Operasi Dasar Singly Linked List  2 (primitive list)4.2. Operasi Dasar Singly Linked List  2 (primitive list)
4.2. Operasi Dasar Singly Linked List 2 (primitive list)
 
Graf ( Matematika Diskrit)
Graf ( Matematika Diskrit)Graf ( Matematika Diskrit)
Graf ( Matematika Diskrit)
 
Array searching sorting_pert_11,12,13,14,15
Array searching sorting_pert_11,12,13,14,15Array searching sorting_pert_11,12,13,14,15
Array searching sorting_pert_11,12,13,14,15
 
Materi 3 Finite State Automata
Materi 3   Finite State AutomataMateri 3   Finite State Automata
Materi 3 Finite State Automata
 
4 diagram relasi antar entitas (ERD)
4 diagram relasi antar entitas (ERD)4 diagram relasi antar entitas (ERD)
4 diagram relasi antar entitas (ERD)
 
Graf pohon (bagian ke 6)
Graf pohon (bagian ke 6)Graf pohon (bagian ke 6)
Graf pohon (bagian ke 6)
 
Arsitektur Sistem Basis Data
Arsitektur Sistem Basis DataArsitektur Sistem Basis Data
Arsitektur Sistem Basis Data
 
Aljabar boolean MK matematika diskrit
Aljabar boolean MK matematika diskritAljabar boolean MK matematika diskrit
Aljabar boolean MK matematika diskrit
 

Similar a 5. Doubly Linked List (Struktur Data) (14)

Linked List
Linked ListLinked List
Linked List
 
Linked list
Linked listLinked list
Linked list
 
Materi linked list dan bubble sort
Materi linked list dan bubble sortMateri linked list dan bubble sort
Materi linked list dan bubble sort
 
Sd bab 8a (senarai)
Sd bab 8a (senarai)Sd bab 8a (senarai)
Sd bab 8a (senarai)
 
Struktur data
Struktur dataStruktur data
Struktur data
 
queue antrian
queue antrianqueue antrian
queue antrian
 
Laporan Praktikum Struktur Data Modul 3
Laporan Praktikum Struktur Data Modul 3Laporan Praktikum Struktur Data Modul 3
Laporan Praktikum Struktur Data Modul 3
 
8. Multi List (Struktur Data)
8. Multi List (Struktur Data)8. Multi List (Struktur Data)
8. Multi List (Struktur Data)
 
Stack & queue by stanly maarende
Stack & queue by stanly maarendeStack & queue by stanly maarende
Stack & queue by stanly maarende
 
Linked List dalam Struktur Data
Linked List dalam Struktur DataLinked List dalam Struktur Data
Linked List dalam Struktur Data
 
Struktur data
Struktur dataStruktur data
Struktur data
 
Modul 2
Modul 2Modul 2
Modul 2
 
Modul 3 strukdat
Modul 3 strukdatModul 3 strukdat
Modul 3 strukdat
 
MAKALAH DOUBLE LINKED LIST BAHASA C.docx
MAKALAH DOUBLE LINKED LIST BAHASA C.docxMAKALAH DOUBLE LINKED LIST BAHASA C.docx
MAKALAH DOUBLE LINKED LIST BAHASA C.docx
 

Más de Kelinci Coklat

Más de Kelinci Coklat (20)

Bab 7 integrasi numerik
Bab 7 integrasi numerikBab 7 integrasi numerik
Bab 7 integrasi numerik
 
Bab 6 turunan numerik
Bab 6 turunan numerikBab 6 turunan numerik
Bab 6 turunan numerik
 
Bab 5 interpolasi newton lanjutan
Bab 5 interpolasi newton lanjutanBab 5 interpolasi newton lanjutan
Bab 5 interpolasi newton lanjutan
 
Bab 5 interpolasi
Bab 5 interpolasiBab 5 interpolasi
Bab 5 interpolasi
 
Bab 4 sistem persamaan linear
Bab 4 sistem persamaan linearBab 4 sistem persamaan linear
Bab 4 sistem persamaan linear
 
Bab 3 penyelesaian persamaan tak linear
Bab 3 penyelesaian persamaan tak linearBab 3 penyelesaian persamaan tak linear
Bab 3 penyelesaian persamaan tak linear
 
Bab 2 perhitungan galat
Bab 2  perhitungan galatBab 2  perhitungan galat
Bab 2 perhitungan galat
 
Bab 1 pendahuluan
Bab 1 pendahuluanBab 1 pendahuluan
Bab 1 pendahuluan
 
Bab 8 persamaan differensial-biasa
Bab 8 persamaan differensial-biasaBab 8 persamaan differensial-biasa
Bab 8 persamaan differensial-biasa
 
6. Stack (Struktur Data)
6. Stack (Struktur Data)6. Stack (Struktur Data)
6. Stack (Struktur Data)
 
3. Pointer dan List Berkait Singly
3. Pointer dan List Berkait Singly3. Pointer dan List Berkait Singly
3. Pointer dan List Berkait Singly
 
1. Algoritma, Struktur Data dan Pemrograman Terstruktur
1. Algoritma, Struktur Data dan Pemrograman Terstruktur1. Algoritma, Struktur Data dan Pemrograman Terstruktur
1. Algoritma, Struktur Data dan Pemrograman Terstruktur
 
Anuitas Biasa (Matematika Keuangan)
Anuitas Biasa (Matematika Keuangan)Anuitas Biasa (Matematika Keuangan)
Anuitas Biasa (Matematika Keuangan)
 
Bunga Majemuk (Matematika Keuangan)
Bunga Majemuk (Matematika Keuangan)Bunga Majemuk (Matematika Keuangan)
Bunga Majemuk (Matematika Keuangan)
 
Bunga Sederhana dan Tingkat Diskon (Matematika Keuangan)
Bunga Sederhana dan Tingkat Diskon (Matematika Keuangan)Bunga Sederhana dan Tingkat Diskon (Matematika Keuangan)
Bunga Sederhana dan Tingkat Diskon (Matematika Keuangan)
 
Anuitas Tumbuh dan Variabel (Matematika Keuangan)
Anuitas Tumbuh dan Variabel (Matematika Keuangan)Anuitas Tumbuh dan Variabel (Matematika Keuangan)
Anuitas Tumbuh dan Variabel (Matematika Keuangan)
 
Anuitas di Muka dan Ditunda (Matematika Keuangan)
Anuitas di Muka dan Ditunda (Matematika Keuangan)Anuitas di Muka dan Ditunda (Matematika Keuangan)
Anuitas di Muka dan Ditunda (Matematika Keuangan)
 
Amortisasi dan Penyusutan (Matematika Keuangan)
Amortisasi dan Penyusutan (Matematika Keuangan)Amortisasi dan Penyusutan (Matematika Keuangan)
Amortisasi dan Penyusutan (Matematika Keuangan)
 
Obligasi (Matematika Keuangan)
Obligasi (Matematika Keuangan)Obligasi (Matematika Keuangan)
Obligasi (Matematika Keuangan)
 
Saham, Yield, dan Return (Matematika Keuangan)
Saham, Yield, dan Return (Matematika Keuangan)Saham, Yield, dan Return (Matematika Keuangan)
Saham, Yield, dan Return (Matematika Keuangan)
 

Último

1. Kisi-kisi PAT IPA Kelas 7 Kurmer 2024
1. Kisi-kisi PAT IPA Kelas 7 Kurmer 20241. Kisi-kisi PAT IPA Kelas 7 Kurmer 2024
1. Kisi-kisi PAT IPA Kelas 7 Kurmer 2024
DessyArliani
 
Contoh PPT Seminar Proposal Teknik Informatika.pptx
Contoh PPT Seminar Proposal Teknik Informatika.pptxContoh PPT Seminar Proposal Teknik Informatika.pptx
Contoh PPT Seminar Proposal Teknik Informatika.pptx
IvvatulAini
 
Kenakalan Remaja (Penggunaan Narkoba).ppt
Kenakalan Remaja (Penggunaan Narkoba).pptKenakalan Remaja (Penggunaan Narkoba).ppt
Kenakalan Remaja (Penggunaan Narkoba).ppt
novibernadina
 
Aksi Nyata Sosialisasi Profil Pelajar Pancasila.pdf
Aksi Nyata Sosialisasi Profil Pelajar Pancasila.pdfAksi Nyata Sosialisasi Profil Pelajar Pancasila.pdf
Aksi Nyata Sosialisasi Profil Pelajar Pancasila.pdf
JarzaniIsmail
 
Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...
Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...
Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...
pipinafindraputri1
 

Último (20)

1. Kisi-kisi PAT IPA Kelas 7 Kurmer 2024
1. Kisi-kisi PAT IPA Kelas 7 Kurmer 20241. Kisi-kisi PAT IPA Kelas 7 Kurmer 2024
1. Kisi-kisi PAT IPA Kelas 7 Kurmer 2024
 
Contoh PPT Seminar Proposal Teknik Informatika.pptx
Contoh PPT Seminar Proposal Teknik Informatika.pptxContoh PPT Seminar Proposal Teknik Informatika.pptx
Contoh PPT Seminar Proposal Teknik Informatika.pptx
 
MODUL AJAR SENI RUPA KELAS 6 KURIKULUM MERDEKA.pdf
MODUL AJAR SENI RUPA KELAS 6 KURIKULUM MERDEKA.pdfMODUL AJAR SENI RUPA KELAS 6 KURIKULUM MERDEKA.pdf
MODUL AJAR SENI RUPA KELAS 6 KURIKULUM MERDEKA.pdf
 
Topik 4_Eksplorasi Konsep LK Kelompok_Pendidikan Berkelanjutan
Topik 4_Eksplorasi Konsep LK Kelompok_Pendidikan BerkelanjutanTopik 4_Eksplorasi Konsep LK Kelompok_Pendidikan Berkelanjutan
Topik 4_Eksplorasi Konsep LK Kelompok_Pendidikan Berkelanjutan
 
PPT Mean Median Modus data tunggal .pptx
PPT Mean Median Modus data tunggal .pptxPPT Mean Median Modus data tunggal .pptx
PPT Mean Median Modus data tunggal .pptx
 
Modul Ajar IPAS Kelas 4 Fase B Kurikulum Merdeka [abdiera.com]
Modul Ajar IPAS Kelas 4 Fase B Kurikulum Merdeka [abdiera.com]Modul Ajar IPAS Kelas 4 Fase B Kurikulum Merdeka [abdiera.com]
Modul Ajar IPAS Kelas 4 Fase B Kurikulum Merdeka [abdiera.com]
 
MODUL AJAR BAHASA INGGRIS KELAS 6 KURIKULUM MERDEKA.pdf
MODUL AJAR BAHASA INGGRIS KELAS 6 KURIKULUM MERDEKA.pdfMODUL AJAR BAHASA INGGRIS KELAS 6 KURIKULUM MERDEKA.pdf
MODUL AJAR BAHASA INGGRIS KELAS 6 KURIKULUM MERDEKA.pdf
 
KELAS 10 PERUBAHAN LINGKUNGAN SMA KURIKULUM MERDEKA
KELAS 10 PERUBAHAN LINGKUNGAN SMA KURIKULUM MERDEKAKELAS 10 PERUBAHAN LINGKUNGAN SMA KURIKULUM MERDEKA
KELAS 10 PERUBAHAN LINGKUNGAN SMA KURIKULUM MERDEKA
 
OPTIMALISASI KOMUNITAS BELAJAR DI SEKOLAH.pptx
OPTIMALISASI KOMUNITAS BELAJAR DI SEKOLAH.pptxOPTIMALISASI KOMUNITAS BELAJAR DI SEKOLAH.pptx
OPTIMALISASI KOMUNITAS BELAJAR DI SEKOLAH.pptx
 
BAHAN PAPARAN UU DESA NOMOR 3 TAHUN 2024
BAHAN PAPARAN UU DESA NOMOR 3 TAHUN 2024BAHAN PAPARAN UU DESA NOMOR 3 TAHUN 2024
BAHAN PAPARAN UU DESA NOMOR 3 TAHUN 2024
 
vIDEO kelayakan berita untuk mahasiswa.ppsx
vIDEO kelayakan berita untuk mahasiswa.ppsxvIDEO kelayakan berita untuk mahasiswa.ppsx
vIDEO kelayakan berita untuk mahasiswa.ppsx
 
Kenakalan Remaja (Penggunaan Narkoba).ppt
Kenakalan Remaja (Penggunaan Narkoba).pptKenakalan Remaja (Penggunaan Narkoba).ppt
Kenakalan Remaja (Penggunaan Narkoba).ppt
 
Panduan Memahami Data Rapor Pendidikan 2024
Panduan Memahami Data Rapor Pendidikan 2024Panduan Memahami Data Rapor Pendidikan 2024
Panduan Memahami Data Rapor Pendidikan 2024
 
668579210-Visi-Gp-Berdasarkan-Tahapan-Bagja.pdf
668579210-Visi-Gp-Berdasarkan-Tahapan-Bagja.pdf668579210-Visi-Gp-Berdasarkan-Tahapan-Bagja.pdf
668579210-Visi-Gp-Berdasarkan-Tahapan-Bagja.pdf
 
Aksi Nyata Sosialisasi Profil Pelajar Pancasila.pdf
Aksi Nyata Sosialisasi Profil Pelajar Pancasila.pdfAksi Nyata Sosialisasi Profil Pelajar Pancasila.pdf
Aksi Nyata Sosialisasi Profil Pelajar Pancasila.pdf
 
TUGAS RUANG KOLABORASI 1.3 PRAKARSA PERUBAHAN
TUGAS RUANG KOLABORASI 1.3 PRAKARSA PERUBAHANTUGAS RUANG KOLABORASI 1.3 PRAKARSA PERUBAHAN
TUGAS RUANG KOLABORASI 1.3 PRAKARSA PERUBAHAN
 
Bab 4 Persatuan dan Kesatuan di Lingkup Wilayah Kabupaten dan Kota.pptx
Bab 4 Persatuan dan Kesatuan di Lingkup Wilayah Kabupaten dan Kota.pptxBab 4 Persatuan dan Kesatuan di Lingkup Wilayah Kabupaten dan Kota.pptx
Bab 4 Persatuan dan Kesatuan di Lingkup Wilayah Kabupaten dan Kota.pptx
 
DEMONSTRASI KONTEKSTUAL MODUL 1.3 CGP 10.pptx
DEMONSTRASI KONTEKSTUAL MODUL 1.3 CGP 10.pptxDEMONSTRASI KONTEKSTUAL MODUL 1.3 CGP 10.pptx
DEMONSTRASI KONTEKSTUAL MODUL 1.3 CGP 10.pptx
 
Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...
Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...
Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...
 
Aksi Nyata PMM Topik Refleksi Diri (1).pdf
Aksi Nyata PMM Topik Refleksi Diri (1).pdfAksi Nyata PMM Topik Refleksi Diri (1).pdf
Aksi Nyata PMM Topik Refleksi Diri (1).pdf
 

5. Doubly Linked List (Struktur Data)

  • 1. Doubly Linked List Akmal, S.Si, MT Mata Kuliah : Struktur Data
  • 2. Tujuan  Mahasiswa dapat : Mengoperasikan dan membuat program semua algoritma primitive list pada variasi list (doubly dan sirkular) dengan benar
  • 3. Pokok Bahasan  Operasi Traversal List doubly  Menambah di depan, belakang dan tengah  Menghapus di depan, belakang dan tengah  Variasi List Berkepala  Variasi List Circular)
  • 4. Pengertian List Berkait Doubly  Doubly Linked List atau List berkait double adalah suatu bentuk tipe data abstrak yang merupakan kumpulan dari data berbentuk record dengan ciri setiap elemen data (record) memiliki karakteristik:  Ada informasi (info)  Ada 2 buah pengait (pointer) yaitu :  antara satu elemen dengan elemen yang berikutnya (next)  antara satu elemen dengan elemen yang sebelumnya (prev) A B C D First prev next
  • 5. Pendeklarasian tipe struktur list berkait doubly struct namaRecord { tipe1 info1; //info . . . . . . . namaRecord* namaPointer; //namaPointer sbg pengait 1 namaRecord* namaPointer; //namaPointer sbg pengait 2 }; typedef namaRecord* pointer; //membuat tipe alias pointer typedef pointer List; //membuat alias List
  • 6. Contoh : struct ElemtList { char info; ElemtList* next; ElemtList* prev; }; typedef ElemtList* pointer; typedef pointer List;
  • 7. Operasi Pada List Berkait Doubly Operasi dasar itu pada doubly linked list pada dasarnya hampir sama dengan singly linked list yaitu :  Penyisipan/Insert  Penyisipan bisa dilakukan di depan (Insert First), di belakang (Insert Last) dan di tengah (Insert After dan Insert Before )  Penghapusan/Delete  Penghapusan bisa dilakukan di depan (Delete First), di belakang (Delete Last) dan di tengah (Delete After, Delete Before dan DeletePCari)  Penelusuran beruntun Linked List/Traversal  Mengunjungi semua elemen list dan biasanya dimulai dari elemen pertama  Sama dengan Singly linked list  Pencarian elemen list/Searching  Melakukan searching berdasarkan suatu kunci untuk mencari apakah data yang diinginkan ada dalam list dan sekaligus untuk mendapatkan alamat dari elemen yang dicari.  Sama dengan Singly Linked list
  • 8. Create List dan Create Elemen void CreateList(List& First) { First = NULL; } Adapun langkah-langkah yang dilakukan dalam create Element adalah:  alokasi suatu tempat yang dicatat oleh pointer pBaru  Mengisi Info  Memberi nilai NULL pada pointer pengait (next)  Memberi nilai NULL pada pointer pengait (prev) void createElement(pointer& pBaru) { pBaru = new ElemtList; cin >> pBaru->info; pBaru->next = NULL; pBaru->prev = NULL; }
  • 9. Insert First Doubly Insert First pada list doubly adalah proses penyisipan sebuah elemen list ke dalam sebuah list dimana penyisipan dilakukan di depan. Secara umum langkah-langkah untuk operasi Insert First doubly adalah a. Menciptakan elemen baru (Create Element) b. Menambahkan elemen baru tersebut ke list dengan cara  Menambah sebuah elemen list baru di awal list atau di depan.  Elemen baru tersebut menjadi elemen pertama dan di catat oleh pengenal list Ada 2 kasus yang harus ditangani yaitu :  Jika list masih kosong  Jika list sudah ada isi
  • 10. Insert First Doubly  Kasus kosong  Kasus ada isi A First A First pBaru pBaru A B C D First A B C D First pBaru 1 2 3
  • 11. Fungsi Insert First Doubly void insertFirstDoubly(List& First, pointer pBaru){ // I.S List First mungkin kosong dan pBaru sudah // terdefinisi // F.S List bertambah satu elemen didepan dengan pBaru if (First==NULL) // kasus kosong First=pBaru; else { // kasus ada isi pBaru->next=First; // 1 First -> prev = pbaru; // 2 First=pBaru; // 3 } }
  • 12. Insert Last Doubly  Insert Last Doubly adalah proses penyisipan sebuah elemen list ke dalam sebuah list dimana penyisipan dilakukan di belakang.  Secara umum langkah-langkah untuk operasi Insert Last adalah sama seperti Insert First yaitu: a. Menciptakan elemen baru (Create Element) b. Menambahkan elemen baru tersebut ke list dengan cara  Menambah sebuah elemen list baru di akhir list atau di belakang.  Elemen baru tersebut menjadi elemen terakhir yang memiliki nilai next nya adalah NULL. Ada 2 kasus yang harus ditangani yaitu :  Jika list masih kosong (sama seperti Insert First)  Jika list sudah ada isi
  • 13. Insert Last Doubly Kasus list ada isi :  Langkah-langkah yang dilakukan adalah : 1. Menemukan / mencari elemen terakhir dengan ciri yaitu elemen yang next-nya bernilai NULL. Pemeriksaan dilakukan mulai dari elemen pertama. Selanjutnya akan diperiksa elemen-elemen yang next-nya bernilai NULL. Gunakan pointer bantuan (last) untuk mencatat elemen terakhir tersebut. A B C D First last 1 pBaru
  • 14. Insert Last Doubly 2. Sambungkan elemen terakhir yang dicatat oleh last dengan elemen yang ditunjuk oleh pBaru 2. last  next = pbaru; 3. pbaru  prev = last; A B C D First last 2 3 pBaru
  • 15. Fungsi InsertLast Doubly void InsertLastDoubly(List& First, pointer pBaru){ // I.S List First mungkin kosong dan pBaru sudah // terdefinisi // F.S List bertambah dibelakang (pBaru sesudah last) pointer last; // last untuk mencatat elemen terakhir cout<<"Insert Last"<<endl; if (First==NULL){ //kosong First=pBaru; } else { // ada isi last=First; while (last->next!=NULL){ last=last->next; } last->next=pBaru; // sambungkan pBaru->prev = last; } }
  • 16. Insert After Doubly / Penyisipan Di Tengah  Insert After doubly adalah primitif untuk menambah sebuah elemen list baru setelah elemen tertentu pada list berkait doubly.  Langkah-langkah penyisipan :  1. Temukan suatu elemen (Searching) dimana elemen yang baru akan disisipkan sesudah elemen tersebut.  2. Jika ditemukan, maka ada 2 kasus yang mungkin terjadi yaitu  Elemen yang dicari berada di belakang sehingga akan terjadi penyisipan di belakang (insert Last )  Elemen yang dicari berada di tengah sehingga elemen yang baru akan berada diantara 2 buah elemen (di tengah) A B D C First pCari pBaru 12 1. pBaru ->next=pCari ->next 4. pCari ->next = pBaru 2. pBaru->prev = pCari 3. pBaru->next->prev=pBaru 4 3
  • 17. Insert Before Doubly / Penyisipan Di Tengah  Insert Before doubly adalah primitif untuk menambah sebuah elemen list baru sebelum elemen tertentu pada list berkait doubly. Langkah-langkah penyisipan :  1. Temukan suatu elemen (Searching) dimana elemen yang baru akan disisipkan sesudah elemen tersebut.  2. Jika ditemukan, maka ada 2 kasus yang mungkin terjadi yaitu  Elemen yang dicari berada di awal list sehingga akan terjadi penyisipan di depan (insert First )  Elemen yang dicari berada di tengah sehingga elemen yang baru akan berada diantara 2 buah elemen (di tengah) 1. pBaru next = pCari; 2. pBaru prev = pCari  prev; 3. pCari prev  next = pBaru; 4. pCari prev = pBaru; A B D C First pCari pBaru 2 3 4 1
  • 18. Delete First Doubly / Penghapusan Di Depan  Merupakan penghapusan sebuah elemen yang ada di depan. Elemen List yang akan dihapus adalah elemen yang dicatat / ditunjuk oleh First Secara umum ada 3 kasus yang perlu ditangani untuk operasi Delete First yaitu: a. Kasus List kosong b. Kasus List dengan isi 1 eleme c. Kasus List dengan isi lebih dari 1 elemen  Menghapus elemen yang depan / pertama yang alamatnya dicatat oleh First,, sehingga list akan berkurang 1 elemen.  Setelah elemen tersebut dihapus maka elemen berikutnya menjadi elemen pertama yang di tunjuk oleh First 1. pHapus = First 2. First=First->next 3. pHapus->next=NULL 4. First->prev=NULL A B C D First pHapus 1 2 3 4
  • 19. Delete Last Doubly / Penghapusan Di Belakang  Merupakan penghapusan sebuah elemen yang ada di belakang. Elemen List yang akan dihapus adalah elemen yang nextnya bernilai NULL. Secara umum ada 3 kasus yang perlu ditangani untuk operasi Delete Last yaitu: a. Kasus List kosong b. Kasus List dengan isi 1 elemen c. Kasus List dengan isi lebih dari 1 elemen  Menemukan / mencari elemen terakhir dengan ciri yaitu elemen yang next- nya bernilai NULL dengan menggunakan pointer bantuan (last)  Tidak perlu precLast untuk penghapusan elemen terakhir 1. pHapus = last 2. last->prev->next = NULL 3. pHapus->prev = NULL A B C D First pHapus 1 2 3 last
  • 20. Delete After Doubly / Penghapusan Di Tengah  Menghapus sebuah elemen list setelah elemen tertentu Langkah-langkah penghapusan : 1. Temukan suatu elemen dimana elemen yang akan dihapus berada sesudah elemen tersebut. 2. Jika ditemukan, maka ada 3 kasus yang mungkin terjadi yaitu a. Elemen yang dicari (pCari) berada di belakang sehingga tidak ada yang akan dihapus sesudah pCari tersebut. b. pCari menunjuk elemen sebelum yang terakhir maka akan dilakukan penghapusan di belakang (delete Last) c. pCari berada pada selain a dan b.  pHapus adalah elemen sesudah pCari  lepaskan kaitan antara yang ditunjuk oleh pCari dengan yang akan dihapus  putuskan kaitan antara yang ditunjuk oleh pHapus dengan elemen sesudahnya 1. pHapus = pCari next 2. pCari next = pHapus next 3. pHapus next  prev = pCari 4. pHapus  next = NULL 5. pHapus  prev = NULL A B C D First pCari pHapus 2 1 3 4 5
  • 21. Delete Before Doubly / Penghapusan Di Tengah  Menghapus sebuah elemen list sebelum elemen tertentu Langkah-langkah penghapusan : 1. Temukan suatu elemen dimana elemen yang akan dihapus berada sebelum elemen tersebut. 2. Jika ditemukan, maka ada 3 kasus yang mungkin terjadi yaitu a. Elemen yang dicari (pCari) berada di depan sehingga tidak ada yang akan dihapus sebelum pCari tersebut. b. pCari menunjuk elemen sesudah First (yang kedua) maka akan dilakukan penghapusan di depan (delete First) c. pCari berada pada selain a dan b.  pHapus adalah elemen sebelum pCari  lepaskan kaitan antara yang ditunjuk oleh sebelum pHapus dengan yang akan dihapus  putuskan kaitan antara yang ditunjuk oleh pHapus dengan elemen sesudahnya 1. pHapus = pCari  prev 2. pHapus  prev  next = pCari 3. pCari  prev = pHapus  prev 4. pHapus  next = NULL 5. pHapus  prev = NULL A B C D First pCari pHapus 2 1 3 4 5
  • 22. Delete pCari / Penghapusan Di Tengah Menghapus sebuah elemen list yang dicari Langkah-langkah penghapusan : 1. Temukan suatu elemen dimana elemen yang yang akan dihapus adalah elemen itu sendiri. 2. Jika ditemukan, maka ada 3 kasus yang mungkin terjadi yaitu a. Elemen yang dicari (pCari) berada di depan (== First), maka dilakukan penghapusan di depan (deleteFirst) Memiliki 2 buah sub kasus yaitu : List isinya 1 elemen List isinya lebih dari 1 elemen b. Elemen yang dicari berada di belakang maka akan dilakukan penghapusan di belakang (delete Last) c. pCari berada diantara 2 buah elemen ( selain a dan b ).  pHapus adalah elemen yang ditunjuk oleh pCari  lepaskan kaitan antara yang ditunjuk oleh sebelum pHapus dengan yang akan dihapus  putuskan kaitan antara yang ditunjuk oleh pHapus dengan elemen sesudahnya 1. pHapus = pCari 2. pCariprev next = pCari next 3. pCari next  prev = pCari  prev 4. pCari  next = NULL 5. pCari  prev = NULL A B C D First pCari pHapus 2 1 3 4 5
  • 23. List Sirkular Singly  List circular dg isi lebih dari 1 elemen Kosong isi 1 elemen First A First A B C D First
  • 24. List Sirkular Doubly List circular dg isi lebih dari 1 elemen Kosong isi 1 elemen A B C D First First A First
  • 25. Latihan dan Tugas 1. a. Buatlah Fungsi Insert Last untuk suatu struktur data berbentuk Circular Doubly Linked List. Berikan gambaran logic keadaan listnya (Keadaan awal dan Akhir) b. Buatlah Fungsi Delete Last untuk suatu struktur data berbentuk Circular Doubly Linked List. Berikan gambaran logic keadaan listnya (Keadaan awal dan Akhir) 2. a. Buatlah Fungsi Insert First untuk suatu struktur data berbentuk Circular Doubly Linked List. Berikan gambaran logic keadaan listnya (Keadaan awal dan Akhir) b. Buatlah Fungsi Delete First untuk suatu struktur data berbentuk Circular Doubly Linked List. Berikan gambaran logic keadaan listnya (Keadaan awal dan Akhir) 3. Buatlah program lengkap semua primitive list doubly linked list dengan pengelolaan menggunakan suatu menu. Kasus list yang ditangani adalah list pegawai dengan atribut NIP, nama, alamat, gol, dan gaji 