Struktur Data - 5 Circular dan Doubly Linked List

AndiNurkholis1 880 views 16 slides Sep 14, 2025
Slide 1
Slide 1 of 16
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16

About This Presentation

Materi slide Circular dan Doubly Linked List mata kuliah Struktur Data mencakup:
1. Definisi doubly linked list
2. Kelebihan doubly linked list
3. Operasi dasar doubly linked list
4. Definisi circular linked list
5. Kelebihan circular linked list
6. Operasi dasar circular linked list


Slide Content

Jurusan Informatika
Fakultas Teknik Industri
Universitas Pembangunan Nasional “Veteran” Yogyakarta
Struktur
Data
Andi Nurkholis, S.Kom., M.Kom.
Doubly & Circular
Linked List
15 September 2025

Definisi Doubly Linked List
Doubly Linked List adalah jenis linked list di mana setiap node memiliki dua
pointer: satu yang mengarah ke node berikutnya (next) dan satu yang
mengarah ke node sebelumnya (prev). Ini memungkinkan traversal bolak-balik
dalam daftar.
Struktur Node dalam Doubly Linked List:
struct Node {
int data; // Menyimpan data
struct Node* next; // Pointer ke node berikutnya
struct Node* prev; // Pointer ke node sebelumnya
};

Kelebihan Doubly Linked List
üTraversal Bolak-balik: Memungkinkan traversal baik dari depan maupun
belakang, yang sangat berguna dalam beberapa aplikasi.
üFleksibilitas dalam Insertion dan Deletion: Penghapusan node dapat
dilakukan lebih mudah dengan akses langsung ke node sebelumnya.
üPengkurangan Kesulitan dalam Operasi: Operasi seperti penghapusan dari
kedua ujung bisa dilakukan lebih efisien.

Operasi DasarDoubly Linked List
1.Menambahkan Node di Awal
(Head)
2.Menambahkan Node di Akhir
(Tail)
3.Menghapus Node
4.Traversing Doubly Linked List

Menambah Node Head
1.Buat node baru menggunakan alokasi memori.
2.Simpan data yang akan dimasukkan ke dalam node baru.
3.Atur pointer next node baru menunjuk ke head lama, dan pointer prev
node baru diisi NULL.
4.Jika head lama tidak kosong, ubah pointer prev head lama menunjuk ke
node baru.
5.Perbarui head agar menunjuk ke node baru sebagai elemen pertama.

Menambah Node Tail
1.Buat node baru melalui alokasi memori.
2.Simpan data yang diinginkan ke dalam node baru.
3.Atur pointer next node baru menjadi NULL, karena akan ditempatkan di
akhir.
4.Hubungkan pointer prev node baru ke node tail lama, dan ubah next tail
lama menunjuk ke node baru.
5.Perbarui tail agar menunjuk ke node baru sebagai elemen terakhir.

Menghapus Node
1.Tentukan node yang akan dihapus (misalnya dengan pencarian berdasarkan
nilai atau posisi).
2.Jika node memiliki prev ≠ NULL, atur next dari node sebelumnya menunjuk
ke node berikutnya.
3.Jika node memiliki next ≠ NULL, atur prev dari node berikutnya menunjuk
ke node sebelumnya.
4.Jika node adalah head, perbarui head ke node berikutnya. Jika node adalah
tail, perbarui tail ke node sebelumnya.
5.Hapus node dari memori (dealokasi).

Traversing Doubly Linked List
1.Inisialisasi pointer current menunjuk ke head.
2.Selama current ≠ NULL, lakukan proses kunjungan (misalnya menampilkan
data).
3.Geser pointer current ke current.next untuk bergerak maju.
4.Jika ingin mundur, mulai dari tail dan geser current ke current.prev.
5.Traversing selesai ketika semua node sudah dikunjungi, baik arah maju
maupun mundur.

Definisi Circular Linked List
Circular Linked List adalah jenis linked list di mana node terakhir menunjuk
kembali ke node pertama, sehingga membentuk lingkaran. Ini bisa menjadi
singly circular atau doubly circular.
Struktur Node dalam Circular Linked List:
struct Node {
int data; // Menyimpan data
struct Node* next; // Pointer ke node berikutnya
};

Kelebihan Circular Linked List
üDukungan untuk Pemrosesan Berulang: Memungkinkan untuk mengulangi
traversal daftar tanpa perlu kembali ke head, cocok untuk aplikasi yang
berulang.
üPenggunaan Memori yang Efisien: Tidak perlu mengelola pointer null di
akhir, mengurangi overhead memori.
üPertukaran Data yang Mudah: Cocok untuk aplikasi seperti pemutar musik,
di mana track dapat berulang.

Operasi DasarCircular Linked List
1.Menambahkan Node di Awal
(Head)
2.Menambahkan Node di Akhir
(Tail)
3.Menghapus Node
4.Traversing Circular Linked List

Menambah Node Head
1.Buat node baru menggunakan alokasi memori, lalu isi dengan data.
2.Jika list kosong, atur next node baru menunjuk ke dirinya sendiri, kemudian
head diperbarui menjadi node baru.
3.Jika list tidak kosong, hubungkan next node baru ke head lama.
4.Cari node terakhir (tail) dan ubah next-nya menunjuk ke node baru.
5.Perbarui head sehingga menunjuk ke node baru sebagai elemen pertama.

Menambah Node Tail
1.Buat node baru dengan alokasi memori dan isi dengan data.
2.Jika list kosong, atur next node baru menunjuk ke dirinya sendiri, lalu head
dan tail sama-sama menunjuk node baru.
3.Jika list tidak kosong, hubungkan next node baru ke head.
4.Ubah next tail lama agar menunjuk ke node baru.
5.Perbarui tail menjadi node baru sebagai elemen terakhir.

Menghapus Node
1.Tentukan node yang akan dihapus (berdasarkan nilai atau posisi) dengan
traversing mulai dari head.
2.Simpan pointer prev untuk node sebelum target.
3.Jika node target adalah head, cari node terakhir (tail), ubah next-nya
menunjuk ke head baru (head.next).
4.Jika node target bukan head, atur next dari prev menunjuk ke node setelah
target.
5.Dealokasikan node target dari memori.

Traversing Circular Linked List
1.Inisialisasi pointer current menunjuk ke head.
2.Jika list kosong (head = NULL), traversal selesai.
3.Kunjungi node yang ditunjuk current (misalnya cetak data).
4.Geser pointer current ke current.next.
5.Ulangi langkah 3–4 sampai current kembali ke head, lalu hentikan traversal
karena semua node sudah dikunjungi.

Jurusan Informatika
Fakultas Teknik Industri
Universitas Pembangunan Nasional “Veteran” Yogyakarta
Andi Nurkholis, S.Kom., M.Kom.
15 September 2025
Sekian
Terima
Kasih