CDLL Java Implementasi Class Mahasiswa


CDLL Java Implementasi Class Mahasiswa





package cdll;
class Nodecdll {

    Mahasiswa data;
    Nodecdll prev, next;
}

public class CDLL {
    private Nodecdll pAwal, pAkhir;
    private int counter;
    
    public CDLL() {
        pAwal = null;
        pAkhir = null;
        counter = -1;
    }
public void SisipDataDiAwal(Mahasiswa data) {
        Nodecdll pBaru = new Nodecdll();
        pBaru.data = data;
        pBaru.next = null;
        if (pAwal == null) {
            pAwal = pBaru;
            pAkhir = pBaru;
            pAkhir.next = pAwal;
            pAwal.prev = pAkhir;
            counter = 0;
        } else {
            pBaru.next = pAwal;
            pAwal.prev = pBaru;
            pBaru.prev = pAkhir;
            pAkhir.next = pBaru;
            pAwal = pBaru;
            counter++;
        }
    }
public void hapusData(Mahasiswa dtHapus) {
        Nodecdll pSblmHapus, pHapus;
        pSblmHapus = null;
        pHapus = pAwal;
        do {
            pSblmHapus = pHapus;
            pHapus = pHapus.next;
        } while (pHapus != pAkhir.next && pHapus.data != dtHapus);

        if (pHapus != null) {
            if (pHapus == pAwal) {
                hapusSatuDataDiAwal();
            } else if (pHapus == pAkhir) {
                hapusSatuDataDiAkhir();
            } else {
                pSblmHapus.next = pHapus.next;
                (pHapus.next).prev = pSblmHapus;
                counter--;
            }
        } else {
            System.out.println("Data tidak ada ");
        }
    }
public void hapusSatuDataDiAwal() {
        pAwal = pAwal.next;
        pAwal.prev = pAkhir;
        counter--;
    }
public void hapusSatuDataDiAkhir() {
        pAkhir = pAkhir.prev;
        pAkhir.next = pAwal;
        counter--;
    }
public void cetak(String Komentar) {
        System.out.println(Komentar);
        Nodecdll pCetak;
        pCetak = pAwal;
        int i = -1;
        while ((i < counter)) {
            System.out.println(pCetak.data.getNama() + " - " + pCetak.data.getNIM() + " - " + pCetak.data.getIPK() +"");
            pCetak = pCetak.next;
            i++;
        }
        System.out.println("");
    }
public void cetakIPK3(String Komentar) {
        System.out.println(Komentar);
        Nodecdll pCetak;
        pCetak = pAwal;
        int i = -1;
        while ((i < counter)) {
            if (pCetak.data.getIPK() > 3) {
                System.out.println(pCetak.data.getNama() + " - " + pCetak.data.getNIM() + " - " + pCetak.data.getIPK() + "");
            }
            pCetak = pCetak.next;
            i++;
        }
        System.out.println("");
    }
}


public class Mahasiswa {
    private String nama, NIM;
    private double IPK;

    public Mahasiswa(String nama, String NIM, double IPK) {
        this.nama = nama;
        this.NIM = NIM;
        this.IPK = IPK;
    }

    String getNama() {
        return nama;
    }

    String getNIM() {
        return NIM;
    }

    double getIPK() {
        return IPK;
    }
    
}

public class test {
    public static void main(String[] args) {
        CDLL c = new CDLL();
        Mahasiswa mhs1 = new Mahasiswa("135150201111098", "Mely", 2.4);
        Mahasiswa mhs2 = new Mahasiswa("135150201111761", "Aldy", 3.7);
        Mahasiswa mhs3 = new Mahasiswa("135150201111429", "Doni", 3.6);
        Mahasiswa mhs4 = new Mahasiswa("135150201111237", "Ardi", 2.9);
        c.SisipDataDiAwal(mhs1);
        c.SisipDataDiAwal(mhs2);
        c.SisipDataDiAwal(mhs3);
        c.SisipDataDiAwal(mhs4);
        c.cetak("Isi cdll awal");
        c.cetakIPK3("Isi cdll awal IPK > 3");
        c.hapusData(mhs3);
        c.cetak("Isi cdll setelah data Doni dihapus");
        c.hapusSatuDataDiAkhir();
        c.cetak("isi cdll setelah data di akhir dihapus");
    }
}

Tidak ada komentar:

Posting Komentar