Search
Double Linked List
Definisi sederhananya, Double Linked List adalah linked list yang setiap simpulnya memiliki dua buah link/tautan. Biasanya tauta tersebut disebut dengan istilah pointer next (sesudah) dan pointer previous (sebelum). Dengan adanya dua link antar simpul yang berkebalikan arah, maka isi data double linked list dapat dibaca (traversal) dalam dua jalur, yaitu maju (dari belakang), atau mundur (dari depan).
Contoh Source Code : Double Linked List Mahasiswa

Source Code appDLLMahasiswa
package pkgDoubleLinkedList;
import java.util.Scanner;
public class appDLLMahasiswa {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int Pilih = 0;
cMahasiswa mhs = null;
cDLLMahasiswa dllm = new cDLLMahasiswa();
do{
System.out.println("");
System.out.println("MENU DOUBLE LINKED LIST MAHASISWA");
System.out.println("1. Tambah Data");
System.out.println("2. Hapus Data");
System.out.println("3. Cetak Data");
System.out.println("4. Cari Data");
System.out.println("5. Exit");
System.out.print("Pilih = ");
Pilih = input.nextInt();
switch(Pilih){
case 1:
System.out.println("");
System.out.println("TAMBAH DATA");
System.out.println("Masukkan Data berikut!");
System.out.print("NPM : ");
String NPM = input.next();
System.out.print("Nama : ");
String Nama = input.next();
System.out.print("IPK : ");
double IPK = input.nextDouble();
mhs = new cMahasiswa(NPM, Nama, IPK);
dllm.addFront(mhs);
break;
case 2:
System.out.println("");
System.out.println("HAPUS DATA");
System.out.println("");
dllm.delFront();
break;
case 3:
System.out.println("");
System.out.println("CETAK DATA");
System.out.println("");
dllm.print();
break;
case 4:
System.out.println("");
System.out.println("CARI DATA");
System.out.println("");
System.out.print("Masukkan Nama : ");
String fd = input.next();
dllm.find(fd);
break;
case 5:
System.out.println("");
System.out.println("EXIT");
System.out.println("Terimakasih...");
}
}while(Pilih != 5);
}
}Source Code cDLLMahasiswa
package pkgDoubleLinkedList;
public class cDLLMahasiswa {
cMahasiswa head, tail;
int jMahasiswa;
cDLLMahasiswa(){
head = tail = null;
jMahasiswa = 0;
System.out.println("Object Double Linked List Dibuat");
}
public void addFront(cMahasiswa baru){
if(tail == null){
head = tail = baru;
}else{
tail.next = baru;
baru.prev = tail;
tail = baru;
}
System.out.println("Penambahan Sukses...");
}
public void delFront(){
if(tail == null){
System.out.println("Linked List Kosong");
}else if(tail.prev == null){
head = tail = null;
System.out.println("Penghapusan Sukses...");
}else{
cMahasiswa t = tail.prev;
tail.prev = null;
tail = t;
t.next = null;
System.out.println("Penghapusan Sukses...");
}
}
public void print(){
System.out.println("Isi Double Linked List");
System.out.println("Mundur : ");
System.out.println("");
System.out.println("NPM\t\tNama\tIPK");
System.out.println("");
for(cMahasiswa t = head; t !=null; t=t.next){
System.out.println(t.getNPM()+"\t"+t.getNama()+"\t"+t.getIPK());
}
System.out.println("");
System.out.println("\nMaju : ");
System.out.println("NPM\t\tNama\tIPK");
System.out.println("");
for(cMahasiswa t = tail; t != null; t=t.prev){
System.out.println(t.getNPM()+"\t"+t.getNama()+"\t"+t.getIPK());
}
System.out.println("");
}
public void find(String Cari){
if(tail == null){
System.out.println("Linked List Kosong!");
}else{
boolean ada = false;
for(cMahasiswa t = head; t != null; t=t.next){
if(t.getNama().equalsIgnoreCase(Cari)){
ada = true;
break;
}
}
if(ada == true){
System.out.println("Data "+Cari+" Ditemukan...");
}else{
System.out.println("Data "+Cari+" Tidak Ditemukan...");
}
}
}
}Source Code cMahasiswa
package pkgDoubleLinkedList;
public class cMahasiswa {
private String NPM;
private String Nama;
private double IPK;
cMahasiswa prev, next;
cMahasiswa (String np, String nm, double ip){
NPM = np;
Nama = nm;
IPK = ip;
prev = next = null;
System.out.println("Object Simpul"+nm+"Dibuat...");
}
public String getNama(){
return Nama;
}
public String getNPM(){
return NPM;
}
public double getIPK(){
return IPK;
}
}Output Program:



Comments