A. Tujuan
1. Mahasiswa memahami konsep penyimpanan data dengan Double Link List (DLL).
2. Mahasiswa dapat mengimplementasikan Double Link List (DLL) dengan bahasa
Java.
B. Pokok Bahasan
Double Link List (DLL).
C. Tugas Pendahuluan
1. Jelaskan kembali tentang ADT serta perbedaannya dengan tipe data dasar.
2. Jelaskan perbedaan array dan list.
3. Sebutkan dan jelaskan macam-macam list.
4. Misalkan dimiliki sebuah list A sebagai berikut:
D. Materi
E. Praktikum
1. Tuliskan ilustrasi dan algoritma untuk menambahkan node pada bagian depan dan
belakang pada DLL yang disajikan pada Gambar 1.
Ilustrasi tambahDepan
Ilustrasi tambahBelakang
//--------------------------------
// constructor
public DoubleList(){
head = tail = null; // isi DLL masih kosong
}
//--------------------------------
// Method-method
//--------------------------------
public void tambahDepan(long d){
Node2 nodeBaru = new Node2(d); //membuat node baru
if (head == null) //jika DLL kosong
tail = nodeBaru; //nodeBaru mejadi tail
else
head.prev = nodeBaru; //nodeBaru diisi pada prev
head
nodeBaru.next = head; //head berada setelah nodeBaru
head = nodeBaru; //nodeBaru menjadi head
}
//--------------------------------
public void tambahBelakang(long d){
}
//--------------------------------
public Node2 hapusDepan(){
}
3|M o d u l 7 : D o u b l e L i n k L i s t ( D L L )
//--------------------------------
public Node2 hapusBelakang(){
Node2 temp = tail;
if (head.next==null) //jika hanya ada satu node
head = null; // head jadi null
else
tail.prev.next = null;
//prev dari tail di-null-kan
tail = tail.prev;
//prev dari tail sebelumnya jadi tail
return temp;
}
//--------------------------------
public boolean tambahTengah(long key, long d){
Node2 nodeBaru = new Node2(d);
Node2 bantu = head;
while (bantu.data != key){
bantu = bantu.next;
if (bantu == null)
return false;
}
if (bantu == tail){
nodeBaru.next = null;
tail = nodeBaru;
}
else{
nodeBaru.next = bantu.next;
bantu.next.prev = nodeBaru;
}
nodeBaru.prev = bantu;
bantu.next = nodeBaru;
return true;
}
//--------------------------------
public Node2 hapusKey(long key){
Node2 bantu = head;
while (bantu.data != key){
bantu = bantu.next;
if (bantu == null)
return null;
}
if (bantu == head)
head = bantu.next;
else
baru.prev.next = bantu.next;
if (bantu == tail)
tail = bantu.prev;
else
bantu.next.prev = bantu.prev;
4|M o d u l 7 : D o u b l e L i n k L i s t ( D L L )
return bantu;
}
//--------------------------------
public void displayForward(){
System.out.print(" List (head ---> tail): ");
Node2 bantu = head;
while (bantu != null({
bantu.displayNode2();
bantu = bantu.next;
}
System.out.println(" " );
}
//--------------------------------
public void displayBackward(){
System.out.print(" List (tail ---> head): ");
Node2 bantu = tail;
while (bantu != null({
bantu.displayNode2();
bantu = bantu.prev;
}
System.out.println(" " );
}
//--------------------------------
}
a. Class tersebut adalah rancangan untuk membuat ADT DoubleList. Tentukan:
Komponen:
Data/ tipe data : ___________________________________
Operasinya : _________________________________________________
__________________________________________________
Interface :
__________________________________________________
__________________________________________________
5|M o d u l 7 : D o u b l e L i n k L i s t ( D L L )
Method: ________________________
Method: ________________________
Method: ________________________
Method: ________________________
6|M o d u l 7 : D o u b l e L i n k L i s t ( D L L )
4. Buatlah program utama untuk memanggil DoubleList di atas, kemudian tambahkan node
22, 44 dan 66 dari depan, dan tambahkan node 11, 33 dan 55 dari belakang.
//contoh
//Anda dapat membuatnya sesuai selera Anda.
import java.util.Scanner;
class DoubleListApp{
public static void main(String[] arg){
DoubleList list = new DoubleList();
Scanner scn = new Scanner(System.in);
list.tambahDepan(22);
list.tambahDepan(44);
list.tambahDepan(66);
list.tambahBelakang(11);
list.tambahBelakang(33);
list.tambahBelakang(55);
// ----------------------------------
Node2 hapusD;
hapusD = list.hapusDepan(); // hapusD = temp
if (hapusD != null){
System.out.print("Menghapus " +
hapusD.displayNode2());
System.out.println(" ");
}
list.displayForward();
// ----------------------------------
Node2 hapusB;
hapusB = list.hapusDepan();
if (hapusD != null){
System.out.print("Menghapus " +
hapusB.displayNode2());
System.out.println(" ");
}
list.displayForward();
// -----------------------------------
System.out.print("Data yang dihapus: ");
long y = scn.nextLong();
Node2 d = list.hapusKey(y);
System.out.println("Hapus node berisi data " +y);
if (d==null)
System.out.println("Tidak bisa menghapus node.");
list.displayForward();
//--------------------------------------------
System.out.println("Menambah data di tengah List ");
System.out.print("Data yang diinput: ");
7|M o d u l 7 : D o u b l e L i n k L i s t ( D L L )
long ins = scn.nextLong();
System.out.print("Data akan diletakkan setelah data :
");
long dataTengah = scn.nextLong();
list.tambahTengah(dataTengah, ins);
list.displayForward();
}
}
Jelaskan alur/ilustrasi yang dilakukan kelas DoubleListApp().
5. Tambahkan method untuk mengurutkan dan mencari sebuah elemen pada DoubleList di
atas.
8|M o d u l 7 : D o u b l e L i n k L i s t ( D L L )
F. Kesimpulan
Tuliskan kesimpulan yang Anda peroleh dari hasil praktikum pada modul ini.
G. Laporan
Laporan yang disusun harus menjawab pertanyaan berikut. Jika perlu, sertakan gambar
dan tabel. Jawablah pertanyaan berikut ini.
1. Apa yang Anda fahami tentang Double Link List (DLL)?
2. Jelaskan struktur/ komponen yang dimiliki node pada Double Link List (DLL).
3. Jelaskan kelebihan dan kelemahan Double Link List (DLL).
4. Ilustrasikan operasi-operasi yang dimiliki Double Link List (DLL) berdasarkan
kode yang Anda miliki.
Ket:
Gambar boleh mengambil dari internet dan sertakan referensi yang digunakan.
Gambar dicetak dan ditempel pada laporan tugas.
Penulisan judul tabel diletakkan di atas tabel, sedangkan judul gambar diletakkan di
bawah gambar.
H. Tugas
Buatlah program untuk penyimpanan data mahasiswa yang disimpan dalam bentuk SLL
dan DLL, dengan ketentuan:
1. Informasi mahasiswa yang disimpan adalah Nama, NIM dan IPK.
2. Operasi yang dapat dilakukan adalah:
a. Tambah Data
b. Hapus data
c. Update data IPK.
d. Pencarian IPK terbaik (hasil output adalah nama mahasiswa).
I. Materi Selanjutnya
Tree (pohon).
J. Referensi
Arief F.H dan Qonita U.S. 2019. Modul: Praktikum Dasar-dasar Pemrograman.
9|M o d u l 7 : D o u b l e L i n k L i s t ( D L L )
Bandung: Matematika, FST, UIN Sunan Gunung Djati.
Siti Rofiqoh Fitriyani. 2016. Modul Praktikum Algoritma dan Struktur Data. Bandung:
FST, UIN Sunan Gunung Djati
Berbagai sumber.
10 | M o d u l 7 : D o u b l e L i n k L i s t ( D L L )