top of page

Double Linked List

May 10, 2021
2 min read

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


Don't forget to visit my other Social Media

  • Pinterest
  • Instagram

© 2023 by Radinplace. Proudly created with Wix.com

bottom of page