CSLL Java implementasi Class Mahasiswa

CSLL Java implementasi Class Mahasiswa


package csll;
class NodeCsll {

    Mahasiswa data;
    NodeCsll next;
}

class Csll {

    private NodeCsll pAwal, pAkhir;
    private int counter;

    public Csll() {
        pAwal = null;
        pAkhir = null;
        counter = -1;
    }

    public void SisipDataDiAwal(Mahasiswa data) {
        NodeCsll pBaru = new NodeCsll();
        pBaru.data = data;
        pBaru.next = null;
        if (pAwal == null) {
            pAwal = pBaru;
            pAkhir = pBaru;
            pBaru.next = pAwal;
            counter = 0;
        } else {
            pBaru.next = pAwal;
            pAwal = pBaru;
            pAkhir.next = pAwal;
            counter++;
        }
    }

    public void hapusData(Mahasiswa dtHapus) {
        if (pAwal != null) {
            NodeCsll pSbl, pKini, pHapus;
            pSbl = null;
            pKini = pAwal;
            boolean ketemu = false;
            int i = -1;
            if (pAwal != null) {
                i = 0;
            }
            while (!ketemu && (i <= counter) && (i != -1)) {
                if (pKini.data.equals(dtHapus)) {
                    ketemu = true;
                } else {
                    pSbl = pKini;
                    pKini = pKini.next;
                }
                i++;
            }
            if (ketemu) {
                if (pSbl == null) {
                    pHapus = pAwal;
                    pHapus = null;
                } else {
                    pSbl.next = pKini.next;
                    pHapus = pKini;
                    pHapus = null;
                }
                this.counter--;
            }
        }
    }

    public Object hapusSatuDataDiAkhir() {
        NodeCsll tmp = pAwal;
        NodeCsll tampung;
        while (tmp != pAkhir) {
            tmp = tmp.next;
        }
        tampung = pAkhir;
        tmp.next = pAwal;
        counter--;
        return tampung;
    }

    public void cetak(String Komentar) {
        System.out.println(Komentar);
        NodeCsll 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("NULL");
    }

    public void cetakIPK3(String Komentar) {
        System.out.println(Komentar);
        NodeCsll 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("NULL");
    }
}

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) {
        Csll csll = new Csll();
        Mahasiswa mhs1 = new Mahasiswa("135150201111123", "Surti", 3.2);
        Mahasiswa mhs2 = new Mahasiswa("135150201111789", "Renal", 4.0);
        Mahasiswa mhs3 = new Mahasiswa("135150201111234", "Bobbi", 2.1);
        Mahasiswa mhs4 = new Mahasiswa("135150201111456", "April", 1.8);
        csll.SisipDataDiAwal(mhs1);
        csll.SisipDataDiAwal(mhs2);
        csll.SisipDataDiAwal(mhs3);
        csll.SisipDataDiAwal(mhs4);
        csll.cetak("Isi csll awal");
        csll.cetakIPK3("Isi csll awal IPK > 3");
        csll.hapusData(mhs3);
        csll.cetak("Isi csll setelah data Bobbi dihapus");
        csll.hapusSatuDataDiAkhir();
        csll.cetak("isi csll setelah data di akhir dihapus");
    }
}

Tidak ada komentar:

Posting Komentar