Anda di halaman 1dari 21

SENARAI BERANTAI TUNGGAL

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

 Aturan yang dipilih:


 Susunan data dalam senarai berantai tidak dalam keadaan urut
 Simpul baru hanya dapat ditambah di posisi awal atau di posisi akhir senarai
berantai
 Simpul hanya dapat dihapus dari posisi awal atau dari posisi akhir senarai berantai
 Ilustrasi senarai berantai tunggal tidak berkepala dapat dilihat pada gambar di bawah
ini.

pertama terakhir

data=15 kanan data=8 kanan data=26 kanan


RANCANGAN PENGOLAHAN STRUKTUR DATA
SENARAI BERANTAI TUNGGAL TIDAK BERKEPALA
 Diagram kelas UML
ListNode List
-data : int -pertama : ListNode
-kanan : ListNode -terakhir : ListNode
<<constructor>> -nama : String
ListNode(int) <<constructor>>
ListNode(int, ListNode) List ()
+setData(int) : void List (String)
+getData() : int +addPertama(int) : void
+setKanan(ListNode) : void +addTerakhir(int) : void
+getKanan() : ListNode +removePertama() : ListNode
+removeTerakhir() : ListNode
+isEmpty() : boolean
pertama terakhir

data=15 kanan data=8 kanan data=26 kanan


PENGOLAHAN TAMBAH DATA PADA STRUKTUR DATA
SENARAI BERANTAI TUNGGAL TIDAK BERKEPALA
 Algoritma-algoritma untuk tambah data dalam pengolahan struktur data
Senarai Berantai Tunggal Tidak Berkepala (SBTTB) sbb:
A. Algoritma A inisialisasi SBTTB, algoritma ini
untuk membuat keadaan awal SBTTB dalam keadaan kosong, algoritma
ini lebih tepat diletakkan di dalam konstruktor kelas LIST.
B. Algoritma B tambah simpul dari kosong pada SBTTB, algoritma ini
untuk menambah satu simpul baru dari keadaan isi SBTTB masih kosong.
C. Algoritma C tambah simpul di posisi awal pada SBTTB, algoritma ini
untuk menambah satu simpul baru di posisi awal SBTTB dari keadaan
SBTTB sudah berisi.
D. Algoritma D tambah simpul di posisi akhir pada SBTTB, algoritma ini
untuk menambah satu simpul baru di posisi akhir SBTTB dari keadaan
SBTTB sudah berisi.
Pada slide-slide berikut ini akan dijelaskan mengenai algoritma-algoritma ini
beserta ilustrasinya.
ALGORITMA A: INISIALISASI
SENARAI BERANTAI TUNGGAL TIDAK BERKEPALA
 Buat referensi pertama dan terakhir menunjuk null
 pertama = null;
 terakhir = null;

 Algoritma ini lebih tepat diletakkan di dalam konstruktor kelas LIST.


LIST.
 Untuk mencek keadaan kosong ini digunakan method isEmpty() yang berisi algoritma jika pertama == null maka return true untuk menunjukkan kosong selain itu return false untuk menunjukan tidak kosong.

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

 Buat simpul baru (misal dengan data=15) ditunjuk referensi baru


 baru = new ListNode(15);
 Referensi baru.kanan dibuat menunjuk ke simpul pertama
 baru.setKanan(pertama);
 Referensi pertama dibuat menunjuk ke simpul baru
 pertama = baru;

pertama terakhir

data=15 kanan data=8 kanan


=null =null

baru
ALGORITMA D: TAMBAH SIMPUL DI POSISI AKHIR
SENARAI BERANTAI TUNGGAL TIDAK BERKEPALA

 Buat simpul baru (misal dengan data=26) ditunjuk referensi baru


 baru = new ListNode(26);
 Referensi terakhir.kanan dibuat menunjuk ke simpul baru
 terakhir.setKanan(baru);
 Referensi terakhir dibuat menunjuk ke simpul baru
 terakhir = baru;

pertama terakhir

data=15 kanan data=8 kanan data=26 kanan


=null =null

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

 Referensi bantu dibuat menunjuk ke simpul yang akan dihapus (simpul


yang ditunjuk referensi pertama )
 bantu=pertama
 Referensi pertama dibuat menunjuk ke simpul yang ditunjuk pertama.kanan
 pertama = pertama.getKanan();
 Kembalikan referensi yang menunjuk simpul yang telah dihapus
 return bantu;

pertama terakhir

data=15 kanan data=8 kanan data=26 kanan


=null

bantu
ALGORITMA E: HAPUS SIMPUL DI POSISI AWAL
SENARAI BERANTAI TUNGGAL TIDAK BERKEPALA

 Referensi bantu dibuat menunjuk ke simpul yang akan dihapus (simpul


yang ditunjuk referensi pertama )
 bantu=pertama
 Referensi pertama dibuat menunjuk ke simpul yang ditunjuk pertama.kanan
 pertama = pertama.getKanan();
 Kembalikan referensi yang menunjuk simpul yang telah dihapus
 return bantu;

pertama terakhir

data=8 kanan data=26 kanan


=null
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 data=26 kanan


=null =null

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

data=8 kanan null


=null

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

data=15 next data=8 next data=26 next


Terima kasih

Semangat belajar Jaga Kesehatan

Anda mungkin juga menyukai