Jumat, 05 Januari 2018

, ,

ALGORITMA & STRUKTUR DATA BAB 5 : ADT DOUBLE LINKED LIST

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

Soal :
Modifikasikanlah program di atas dengan mengganti tipe item data pada NodeDLL dengan Object. Kemudian gunakan class Buku yang pernah dibuat pada praktikum bab 4 untuk diisikan pada DLL. Gunakan pemasukan data secara interaktif.

Source code :
Class NodeBuku
package asdmodul2;

class NodeBuku {

    Object data;
    NodeBuku prev, next;
    String judul, kategori;
    double sewa, denda;
}


Class Bab5Buku
package asdmodul2;

import java.util.Scanner;

public class Bab5Buku {

    private NodeBuku pKepala, pEkor;

    public Bab5Buku() {
        pKepala = null;
        pEkor = null;
    }

    public void sisipDipKepala(String j, String k, double s, double d) {
        NodeBuku baru = new NodeBuku();
        baru.judul = j;
        baru.kategori = k;
        baru.sewa = s;
        baru.denda = d;
        if (pKepala == null) {
            baru.prev = pKepala;
            baru.next = pEkor;
            pKepala = baru;
            pEkor = baru;
        } else {
            baru.next = pKepala;
            pKepala.prev = baru;
            pKepala = baru;
        }
    }

    public void sisipDipEkor(String j, String k, double s, double d) {
        NodeBuku baru = new NodeBuku();
        baru.judul = j;
        baru.kategori = k;
        baru.sewa = s;
        baru.denda = d;
        if (pEkor == null) {
            baru.prev = pKepala;
            baru.next = pEkor;
            pKepala = baru;
            pEkor = baru;
        } else {
            baru.prev = pEkor;
            pEkor.next = baru;
            pEkor = baru;
        }
    }

    public void hapusDataTertentu(String dataHapus) {
        NodeBuku curr = pKepala;
        while (curr.judul == null ? dataHapus != null : !curr.judul.equals(dataHapus)) {
            curr = curr.next;
        }
        if (curr == pKepala) {
            pKepala = curr.next;
        } else {
            curr.prev.next = curr.next;
        }
        if (curr == pEkor) {
            pEkor = curr.prev;
        } else {
            curr.next.prev = curr.prev;
        }
    }

    public void sisipDataTerurut(double s) {
        NodeBuku a = new NodeBuku();
        a.sewa = s;
        NodeBuku curr = pKepala;
        while (curr != null) {
            NodeBuku cr = curr.next;
            while (cr != null) {
                if (curr.sewa > cr.sewa) {
                    double temp = curr.sewa;
                    curr.sewa = cr.sewa;
                    cr.sewa = temp;
                }
                cr = cr.next;
            }
            curr = curr.next;
        }
    }

    public void cetak(String kom) {
        System.out.println(kom);
        NodeBuku p = pKepala;
        while (p != pEkor.next) {
            System.out.print("\nJudul : " + p.judul + "\nKategori : " + p.kategori + "\nBiaya sewa : " + p.sewa + "\nBiaya denda : " + p.denda + "\n=============================");
            p = p.next;
        }
        System.out.println("\nNULL");
    }

    public static void main(String s[]) {
        Scanner sausan = new Scanner(System.in);
        int choose;
        String judul, kategori;
        double sewa, denda;
        Bab5Buku buku = new Bab5Buku();
        NodeBuku book = new NodeBuku();
        do {
            System.out.println("PROGRAM SEWA BUKU");
            System.out.print("0.EXIT\n1.TAMBAH DATA AWAL\n2.TAMBAH DATA AKHIR\n3.HAPUS DATA\n4.URUTKAN DATA\n5.CETAK DATA\nPILIH ");
            choose = sausan.nextInt();
            switch (choose) {
                case 1:
                    System.out.print("Judul\t: ");
                    judul = sausan.next();
                    sausan.nextLine();
                    System.out.print("Kategori\t: ");
                    kategori = sausan.next();
                    sausan.nextLine();
                    System.out.print("Biaya sewa\t: ");
                    sewa = sausan.nextDouble();
                    System.out.print("Biaya denda\t: ");
                    denda = sausan.nextDouble();
                    buku.sisipDipKepala(judul, kategori, sewa, denda);
                    break;
                case 2:
                    System.out.print("Judul\t: ");
                    judul = sausan.next();
                    sausan.nextLine();
                    System.out.print("Kategori\t: ");
                    kategori = sausan.next();
                    sausan.nextLine();
                    System.out.print("Biaya sewa\t: ");
                    sewa = sausan.nextDouble();
                    System.out.print("Biaya denda\t: ");
                    denda = sausan.nextDouble();
                    buku.sisipDipEkor(judul, kategori, sewa, denda);
                    break;
                case 3:
                    System.out.print("Judul\t: ");
                    judul = sausan.next();
                    sausan.nextLine();
                    buku.hapusDataTertentu(judul);
                    buku.cetak("DATA BUKU '" + judul + "' DIHAPUS");
                    break;
                case 4:
                    buku.sisipDataTerurut(book.sewa);
                    buku.cetak("URUTANNYA");
                    break;
                case 5:
                    buku.cetak("DATA BUKU");
                    break;
            }
        } while (choose != 0);
    }
}




Download the file here
Share:

0 comments:

Posting Komentar