Sabtu, 06 Januari 2018

, ,

ALGORITMA & STRUKTUR DATA BAB 6 : ADT SIRKULAR LINKED LIST

Laporan Praktikum Algoritma & Struktur Data Bab 6 Fakultas Ilmu Komputer Universitas Brawijaya 2017/2018

Soal :
1. Tambahkan fungsi untuk menghapus data dari Circular Single Linked List dari posiis Akhir dengan header sub program sebagai berikut

2. Kembangkan program 7.1 dengan mengisikan data buku sebagaimana pada lathan 4 pada Circular Single Linked List.
3. Tambahkan fungsi atau procedure utnuk menampilkan data buku dari Circular Single Linked List yang mempunnyai hargaSewa sebagai berikut
public void cetakBuku(String param, double hargaSewa){
// lengkapi bagian ini

}


4. Kembangkan Circular Single Linked List di atas menjadi Circular Double Linked List sebagimana gambar struktur berikut :


Source code :
Soal no.1
public Object hapusSatuDataDiAkhir() {
        int s = 0;
        NodeCSLL baru = pAwal;
        while ((s < counter) && (s != -1)){
            baru = baru.next;
            s++;
        }NodeCSLL del = pAkhir;
        Object temp = del.data;
        baru.next = pAwal;
        this.counter--;
        return temp;  }

Soal no.2 & 4
class NodeCSLL {
    Object data;
    NodeCSLL next, prev;
    String judul, kategori;
    double hargaSewa, hargaDenda;}
public class Bab6Circular {
    private NodeCSLL pAwal, pAkhir;
    private int counter;
    public Bab6Circular() {
        pAwal = null;
        pAkhir = null;
        counter = -1; }
    public void SisipDataDiAwal(String j, String k, double s, double d) {
        NodeCSLL pBaru = new NodeCSLL();
        pBaru.judul = j;
        pBaru.kategori = k;
        pBaru.hargaSewa = s;
        pBaru.hargaDenda = d;
        pBaru.next = null;
        if (pAwal == null) {
            pAwal = pBaru;
            pAkhir = pBaru;
            pBaru.next = pAwal;
            pAwal.prev = pBaru;
            counter = 0;
        } else {
            pBaru.next = pAwal;
            pAwal = pBaru;
            pAkhir.next = pAwal;
            pAwal.prev = pAkhir;
            counter++; } }
    public void SisipDataDiAkhir(String j, String k, double s, double d) {
        NodeCSLL pBaru = new NodeCSLL();
        pBaru.judul = j;
        pBaru.kategori = k;
        pBaru.hargaSewa = s;
        pBaru.hargaDenda = d;
        pBaru.next = null;
        if (pAkhir == null) {
            pAkhir = pBaru;
            pAwal = pBaru;
            pBaru.next = pAkhir;
            pAkhir.prev = pBaru;
            counter = 0;
        } else {
            pBaru.next = pAkhir;
            pAkhir = pBaru;
            pAkhir.next.next = pAkhir;
            pAkhir.prev = pAkhir;
            counter++; } }
    public void hapusData(Object 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.judul.equals(dtHapus)) {
                    ketemu = true;
                } else {
                    pSbl = pKini;
                    pKini = pKini.next;
                    pKini.prev = pKini; }
                i++; }
            if (ketemu) {
                if (pSbl == null) {
                    pHapus = pAwal;
                    pHapus = null;
                } else {
                    pSbl.next = pKini.next;
                    pKini.prev = pSbl;
                    pHapus = pKini;
                    pHapus = null; }
                this.counter--; } } }
    public Object hapusSatuDataDiAkhir() {
        int s = 0;
        NodeCSLL baru = pAwal;
        while ((s < counter) && (s != -1)){
            baru = baru.next;
            s++;
        }NodeCSLL del = pAkhir;
        Object temp = del.data;
        baru.next = pAwal;
        pAwal.prev = baru;
        this.counter--;
        return temp; }
    public void cetak(String Komentar) {
        System.out.println(Komentar);
        NodeCSLL pCetak;
        pCetak = pAwal;
        int i = -1;
//if (pCetak != null) i = 0;
//while((i < counter) && (i != -1) ){
        while ((i < counter)) {
            System.out.printf("%s%s %s%s %s %s%s %n", pCetak.judul, "\t", pCetak.kategori, "\t", pCetak.hargaSewa, "\t", pCetak.hargaDenda);
            pCetak = pCetak.next;
            pCetak.prev = pCetak;
            i++; }
        System.out.println(); }
    public static void main(String[] args) {        
        Bab6Circular csll = new Bab6Circular();
        System.out.println("PROGRAM PEMINJAMAN BUKU");
        csll.SisipDataDiAwal("Jigsaw", "Thriller", 20000, 5000);
        csll.SisipDataDiAwal("Night", "Horror", 25000, 5000);
        csll.SisipDataDiAwal("Hujan", "Romance", 10000, 3000);
        System.out.println("Data Buku\n");
        csll.cetak("Judul \t Kategori \t Harga Sewa \t Harga Denda");
        csll.SisipDataDiAwal("Anne", "Biografi", 35000, 15000);
        csll.cetak("DATA BUKU 'ANNE' DITAMBAHKAN DI AWAL");
        csll.SisipDataDiAkhir("Dhuha", "Agama", 30000, 10000);
        csll.cetak("DATA BUKU 'DHUHA' DITAMBAHKAN DI AKHIR");
        csll.hapusData("Hujan");
        csll.cetak("DATA BUKU 'HUJAN' DIHAPUS");
        csll.hapusSatuDataDiAkhir();
        csll.cetak("DATA BUKU TERAKHIR DIHAPUS"); } }

Soal no.3
public void cetakBuku(String param, double hargaSewa) {
        NodeCSLL pCetak = pAwal;
        int i = -1;
        System.out.println("Buku dengan sewa " + param + " Rp " + hargaSewa);
        while ((i < counter)) {
            if ((pCetak.hargaSewa < hargaSewa && param.equalsIgnoreCase("kurangdari"))
                    || (pCetak.hargaSewa == hargaSewa && param.equalsIgnoreCase("samadengan"))
                    || (pCetak.hargaSewa > hargaSewa && param.equalsIgnoreCase("lebihdari"))) {
                System.out.println(pCetak.judul + " " + pCetak.kategori + " " + pCetak.hargaSewa + " " + pCetak.hargaDenda );
            } pCetak = pCetak.next;
            i++;
        } System.out.println(); }


Download the file here
Share:

0 comments:

Posting Komentar