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
4. Kembangkan Circular Single Linked List di atas menjadi Circular Double Linked List sebagimana gambar struktur berikut :
Source code :
Soal no.1
Soal no.2 & 4
Soal no.3
Download the file here
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
0 comments:
Posting Komentar