Sabtu, 06 Januari 2018

, ,

ALGORITMA & STRUKTUR DATA BAB 8 : ADT ANTRIAN

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

Soal :
     1.       Kembangkan program antrian dengan menggunakan ADT Double Linked List yang telah dibuat pada praktikum sebelumnya. Perhatikan bahwa sifat antrian adalah FIFO : First In First Out

    2.      Susunlah program untuk simulasi Round Robin. Setiap proses deQueue() dilakukan pada suatu node maka isi suatu node berkurang 1, kalau nilainya sudah sama dengan 0 maka node tersebut dihapus dari List jika lebih besar dari 0 node tersebut diantrikan lagi untuk diproses berikutnya dengan menggunakan ADT Circular Linked List

Source code :
Soal no.1
Class Bab8QueueNode
package asdmodul3;

public class Bab8QueueNode {

    Object data;
    public Bab8QueueNode next;

    Bab8QueueNode(Object object) {
        this(object, null);
    }

    Bab8QueueNode(Object object, Bab8QueueNode node) {
        data = object;
        next = node;
    }

    Object getObject() {
        return data;
    }

    Bab8QueueNode getNext() {
        return next;
    }
}

Class Bab8QueueList
package asdmodul3;

public class Bab8QueueList {

    private Bab8QueueNode nodeAwal;
    private Bab8QueueNode nodeAkhir;
    private String nama;

    public Bab8QueueList() {
        this("list");
    }

    public Bab8QueueList(String namaList) {
        nama = namaList;
        nodeAwal = nodeAkhir = null;
    }

    public void sisipDiAwal(Object dt) {
        if (kosong()) {
            nodeAwal = nodeAkhir = new Bab8QueueNode(dt);
        } else {
            nodeAwal = nodeAkhir.next = new Bab8QueueNode(dt);
        }
    }

    public void sisipDiAkhir(Object dt) {
        if (kosong()) {
            nodeAwal = nodeAkhir = new Bab8QueueNode(dt);
        } else {
            nodeAkhir = nodeAkhir.next = new Bab8QueueNode(dt);
        }
    }

    public Object hapusDrDepan() {
        Object itemDihapus = null;
        if (!kosong()) {
            itemDihapus = nodeAwal.data;
            if (nodeAwal == nodeAkhir) {
                nodeAwal = nodeAkhir = null;
            } else {
                nodeAwal = nodeAwal.next;
            }
        }
        return itemDihapus;
    }

    public boolean kosong() {
        return nodeAwal == null;
    }

    public void cetak() {
        if (kosong()) {
            System.out.printf("Kosong %s\n", nama);
            return;
        }
        System.out.printf("Isi %s adalah : ", nama);
        Bab8QueueNode kini = nodeAwal;
        while (kini != null) {
            System.out.printf("%s ", kini.data);
            kini = kini.next;
        }
        System.out.println("\n");
    }
}

Class Bab8Queue
package asdmodul3;

public class Bab8Queue {

    private Bab8QueueList listAntrian;

    public Bab8Queue() {
        listAntrian = new Bab8QueueList("queue");
    }

    public void enqueueDepan(Object object) {
        listAntrian.sisipDiAwal(object);
    }
    
    public void enqueueBelakang(Object object){
        listAntrian.sisipDiAkhir(object);
    }

    public Object dequeue() {
        return listAntrian.hapusDrDepan();
    }

    public boolean kosong() {
        return listAntrian.kosong();
    }

    public void cetak() {
        listAntrian.cetak();
    }

    public static void main(String args[]) {
        Bab8Queue q = new Bab8Queue();
        q.enqueueDepan(10);
        q.cetak();
        q.enqueueBelakang(54);
        q.cetak();
        q.enqueueBelakang(10);
        q.cetak();
        q.enqueueBelakang(94);
        q.cetak();
        q.enqueueDepan(25);
        q.cetak();
        Object dtHapus = null;
        while (!q.kosong()) {
            dtHapus = q.dequeue();
            System.out.printf("%s dihapus \n", dtHapus);
            q.cetak();
        }
    }
}

Soal no.2
package asdmodul3;

class NodeRR {

    Object data;
    public NodeRR next;

    NodeRR(Object object) {
        this(object, null);
    }

    NodeRR(Object object, NodeRR node) {
        data = object;
        next = node;
    }

    Object getObject() {
        return data;
    }

    NodeRR getNext() {
        return next;
    }
}

public class RoundRobin {

    private NodeRR nodeAwal, nodeAkhir;
    private String nama;

    public RoundRobin() {
        this("list");
    }

    public RoundRobin(String namaList) {
        nama = namaList;
        nodeAwal = nodeAkhir = null;
    }
    
    public void enqueue(Object dt) {
        if (kosong()) {
            nodeAwal = nodeAkhir = new NodeRR(dt);
        } else {
            nodeAkhir = nodeAkhir.next = new NodeRR(dt);
        }
    }

    public Object dequeue() {
        Object itemDihapus = null;
        if (!kosong()) {
            itemDihapus = nodeAwal.data;
            do {
                if (nodeAwal == nodeAkhir) {
                    nodeAwal = nodeAkhir = null;
                } else {
                    nodeAwal = nodeAwal.next;
                    enqueue((int) itemDihapus - 1);
                    if ((int)nodeAwal.data==0){
                        nodeAwal = nodeAwal.next;
                    }
                }
            }while ((int)nodeAwal.data==0);
        }
        return itemDihapus;
    }

    public boolean kosong() {
        return nodeAwal == null;
    }

    public void cetak() {
        if (kosong()) {
            System.out.printf("Kosong %s\n", nama);
            return;
        }
        System.out.printf("Isi %s adalah : ", nama);
        NodeRR kini = nodeAwal;
        while (kini != null) {
            System.out.printf("%s ", kini.data);
            kini = kini.next;
        }
        System.out.println("\n");
    }

    public static void main(String[] args) {
        RoundRobin q = new RoundRobin();
        q.enqueue(4);
        q.cetak();
        q.enqueue(3);
        q.cetak();
        q.enqueue(2);
        q.cetak();
        q.enqueue(1);
        q.cetak();
        Object dtHapus = null;
        while (!q.kosong()) {
            dtHapus = q.dequeue();
            System.out.printf("%s dihapus \n", dtHapus, "%s didecrement dan dienqueue \n", dtHapus);
            q.cetak();
        }
    }
}


Download the file here
Share:

1 komentar: