Modul 9b SDL - SBTTK-2022Ganjil
Modul 9b SDL - SBTTK-2022Ganjil
TIDAK BERKEPALA
Oleh
Tim Dosen IFUSD
Jurusan Informatika USD
Senarai Berantai
Tujuan:
Mampu memahami dan menjelaskan apa yang
dimaksud dengan struktur data senarai berantai
Mampu memahami dan menjelaskan apa yang
dimaksud dengan struktur data senarai berantai
tunggal tidak berkepala
Mampu memahami dan menjelaskan pengelolaan
struktur data senarai berantai tunggal tidak berkepala
meliputi inisialisasi, penambahan serta penghapusan
simpul
Senarai Berantai
Senarai berantai (lingked list) merupakan contoh struktur data
sederhana yang menggunakan pemakaian memori secara dinamis.
Dalam struktur data senarai berantai yang merupakan struktur data
dinamis, ukuran data dapat ditambah atau dikurangi saat waktu
eksekusi (execution time), sehingga penggunaan memori lebih efisien
dibanding dengan struktur data statis.
Ukuran struktur data hanya dibatasi ukuran memori yang tersedia.
Dalam senarai berantai diterapkan aturan yang sesuai dengan
kebutuhan, seperti:
Urut naik (ascending)
Urut turun (descending)
Tanpa aturan
Pada pertemuan ini kita akan mencoba salah satu tipe struktur data
senarai berantai yaitu Single Linked List atau lebih spesifik lagi
Senarai Berantai Tunggal Tidak Berkepala.
RANCANGAN PENGOLAHAN STRUKTUR DATA
SENARAI BERANTAI TUNGGAL TIDAK BERKEPALA
pertama terakhir
pertama terakhir
null null
ALGORITMA B: TAMBAH SIMPUL DARI KOSONG PADA
SENARAI BERANTAI TUNGGAL TIDAK BERKEPALA
Buat simpul baru (misal dengan data=8) ditunjuk referensi baru
baru = new ListNode(8);
Referensi pertama dibuat menunjuk ke simpul baru
pertama = baru;
Referensi terakhir dibuat menunjuk ke simpul baru
terakhir = baru;
pertama terakhir
null null
data=8 Kanan
=null
baru
ALGORITMA C: TAMBAH SIMPUL DI POSISI AWAL
SENARAI BERANTAI TUNGGAL TIDAK BERKEPALA
pertama terakhir
baru
ALGORITMA D: TAMBAH SIMPUL DI POSISI AKHIR
SENARAI BERANTAI TUNGGAL TIDAK BERKEPALA
pertama terakhir
baru
PENGOLAHAN TAMBAH DATA PADA STRUKTUR DATA
SENARAI BERANTAI TUNGGAL TIDAK BERKEPALA
Berikut ini dua method untuk melakukan penambahan data
Algoritma method addPertama:
1. if (isEmpty)
2. Algoritma B
3. else
4. Algoritma C
Algoritma method addTerakhir:
1. if (isEmpty)
2. Algoritma B
3. else
4. Algoritma D
PENGOLAHAN HAPUS DATA PADA STRUKTUR DATA
SENARAI BERANTAI TUNGGAL TIDAK BERKEPALA
Algoritma-algoritma untuk hapus data dalam pengolahan struktur
data Senarai Berantai Tunggal Tidak Berkepala (SBTTB)
E. Algoritma E hapus simpul di posisi awal SBTTB,
algoritma ini untuk menghapus satu simpul yang terletak di
awal SBTTB.
F. Algoritma F hapus simpul di posisi akhir SBTTB,
algoritma ini untuk menghapus satu simpul yang terletak di
akhir SBTTB.
G. Algoritma G hapus simpul terakhir di SBTTB, algoritma ini
untuk menghapus simpul terakhir (simpulnya tinggal satu) dari
SBTTB.
Pada slide-slide berikut ini akan dijelaskan mengenai algoritma-
algoritma ini beserta ilustrasinya.
ALGORITMA E: HAPUS SIMPUL DI POSISI AWAL
SENARAI BERANTAI TUNGGAL TIDAK BERKEPALA
pertama terakhir
bantu
ALGORITMA E: HAPUS SIMPUL DI POSISI AWAL
SENARAI BERANTAI TUNGGAL TIDAK BERKEPALA
pertama terakhir
{ bantu=bantu.getKanan(); }
Referensi terakhir dibuat menunjuk ke simpul yang ditunjuk bantu
terakhir = bantu;
Referensi bantu dibuat menunjuk ke simpul yang akan dihapus (ditunjuk bantu.kanan)
bantu = bantu.getKanan();
Referensi terakhir.kanan dibuat menunjuk ke null
terakhir.setKanan(null);
Kembalikan referensi yang menunjuk simpul yang telah dihapus
return bantu;
pertama terakhir
bantu
ALGORITMA F: HAPUS SIMPUL DI POSISI AKHIR
SENARAI BERANTAI TUNGGAL TIDAK BERKEPALA
Referensi bantu dibuat menunjuk ke simpul sebelum simpul yang akan dihapus
(simpul yang ditunjuk referensi terakhir )
bantu = pertama;
While (bantu.getKanan()!=terakhir)
{ bantu=bantu.getKanan(); }
Referensi terakhir dibuat menunjuk ke simpul yang ditunjuk bantu
terakhir = bantu;
Referensi bantu dibuat menunjuk ke simpul yang akan dihapus (ditunjuk bantu.kanan)
bantu = bantu.getKanan();
Referensi terakhir.kanan dibuat menunjuk ke null
terakhir.setKanan(null);
Kembalikan referensi yang menunjuk simpul yang telah dihapus
return bantu;
pertama terakhir
data=8 kanan
=null
ALGORITMA G: HAPUS SIMPUL TERAKHIR
SENARAI BERANTAI TUNGGAL TIDAK BERKEPALA
Cek apakah senarai berantai hanya berisi satu simpul, jika benar proses hapus simpul
terakhir dilanjutkan, jika salah proses ini tidak dilakukan
if (pertama == terakhirl) {…proses hapus simpul terakhir…}
Referensi bantu dibuat menunjuk ke simpul yang akan dihapus (simpul yang ditunjuk
referensi pertama atau terakhir )
bantu = pertama;
Referensi pertama dan terakhir dibuat menunjuk null
terakhir = pertama = null;
Kembalikan referensi yang menunjuk simpul yang telah dihapus
return bantu;
pertama terakhir
bantu
PENGOLAHAN HAPUS DATA PADA STRUKTUR DATA
SENARAI BERANTAI TUNGGAL TIDAK BERKEPALA
Sebelum melakukan penghapusan, cek apakah senarai berantai tidak
kosong, jika tidak kosong proses hapus simpul dapat dilanjutkan, jika
kosong kembalikan nilai null
Berikut ini dua method untuk melakukan penghapusan data
Algoritma method removePertama:
1. if (!isEmpty)
2. if (pertama==terakhir) // apakah simpul yang dihapus adalah simpul terakhir
3. Algoritma G
4. else
5. Algoritma E
6. else
7. return null
PENGOLAHAN HAPUS DATA PADA STRUKTUR DATA
SENARAI BERANTAI TUNGGAL TIDAK BERKEPALA
Algoritma method removeTerakhir :
1. if (!isEmpty)
2. if (pertama==terakhir) // apakah simpul yang dihapus adalah simpul terakhir
3. Algoritma G
4. else
5. Algoritma F
6. else
7. return null
IMPLEMENTASI
SENARAI BERANTAI TUNGGAL TIDAK BERKEPALA
Diagram kelas UML
LinkedList
ListNode -firstNode : ListNode
-data : int -lastNode : ListNode
-next : ListNode -nama : String
<<constructor>> <<constructor>>
ListNode(int) LinkedList()
ListNode(int, ListNode) LinkedList(String)
+setData(int) : void +addFirst(int) : void
+getData() : int +addLast(int) : void
+setNext(ListNode) : void +removeFirst() : ListNode
+getNext() : ListNode +removeLast() : ListNode
+isEmpty() : boolean
+toString() : String
firstNode lastNode