Senin, 26 November 2012

Struktur data - QueueWithLink

import java.util.Scanner;
class Node {
    public String Nim;
    public String Nama;
    public double Ipk;
    public Node next;
// -------------------------------------------------------------
    public Node(String nim, String nama, double ipk) {
        Nim = nim;
        Nama = nama;
        Ipk = ipk;
    }
// -------------------------------------------------------------
    public void tampilNode() {
        System.out.printf(" %-8s  %-13s  %5s \n",Nim,Nama,Ipk);
    }
    public String getNIM(){
        return Nim;
    }
        //method mengambil data nim
    public String getNama(){
        return Nama;
    }
        //method mengambil data nama
    public double getIpk(){
        return Ipk;
    }
        //method mengambil data ipk
} // end class Node
////////////////////////////////////////////////////////////////

class firstEndList {
    private Node first;
    private Node last;
    public int nilai;
    public int max;
// -------------------------------------------------------------
    public firstEndList() {
        nilai=0;
        first = null;
        last = null;
        max=5;
    }
// -------------------------------------------------------------
    public boolean isEmpty() {
        return first==null;
    }
//--------------------------------------------------------------
    public boolean isFull() { // bernilai true jika queue penuh
        return ( nilai == max);
    }
// -------------------------------------------------------------
    public void insertLast(String Nim, String Nama, double Ipk) {
        Node newNode = new Node(Nim,Nama, Ipk);
        if( isEmpty() )
            first = newNode;
        else
            last.next = newNode;
        last = newNode;
        nilai++;
    }
// -------------------------------------------------------------
    public Node hapusFirst() {
        nilai--;
        Node temp = first;
        if(first.next == null)
            last = null;
        first = first.next;
        return temp;  
    }
// -------------------------------------------------------------
    public void tampil() {
        Node indek = first;
        while(indek != null) {
            indek.tampilNode();
            indek = indek.next;
        }
        System.out.println("");
    }
// -------------------------------------------------------------
} // end class LinkList
////////////////////////////////////////////////////////////////

class LinkQueue {
    private firstEndList list;
//--------------------------------------------------------------
    public LinkQueue() {
        list = new firstEndList();
    }
//--------------------------------------------------------------
    public boolean isEmpty() {
        return list.isEmpty();
    }
//--------------------------------------------------------------
    public boolean isFull() {
        return list.isFull();
    }
//--------------------------------------------------------------
    public void insert(String Nim, String Nama, double Ipk) {
        list.insertLast(Nim, Nama,Ipk);
    }
//--------------------------------------------------------------
    public Node hapus() {
        return list.hapusFirst();
    }
//--------------------------------------------------------------
    public void tampilQueue() {
        System.out.println("Queue (awal-->akhir): ");
        list.tampil();
    }
//--------------------------------------------------------------
    public void clear() {
        while( !isEmpty() ) // hapus data sampai kosong
            hapus();
    }
//--------------------------------------------------------------
} // end class LinkQueue
////////////////////////////////////////////////////////////////

class Prak09_11520244043 {
    public static void main(String [] args) {
          Scanner sken = new Scanner(System.in);
        LinkQueue queue = new LinkQueue();
        String nim, nama;
        double ipk;
        int menu;
        //pilihan menu
        do{
            System.out.println("--------------------");
            System.out.println("    MENU PILIHAN    ");
            System.out.println("--------------------");
            System.out.println("  1. Tambah Data    ");
            System.out.println("  2. Lihat Data     ");
            System.out.println("  3. Hapus Data     ");
            System.out.println("  4. Clear Data     ");
            System.out.println("  5. Keluar         ");
            System.out.print("Pilihan anda --> : ");
              menu = sken.nextInt();
              System.out.println("");
            switch(menu) {
                case 1 : {
                    if(queue.isFull()){
                        System.out.println(" Queue sudah penuh!!! ");
                    }else {
                        System.out.println("   Input Data -->>   ");
                        System.out.print(" Nim  : ");
                        nim = sken.next();//Melakukan input nim
                        System.out.print(" Nama : ");
                        nama = sken.next();//Melakukan input nama
                        System.out.print(" Ipk  : ");
                        ipk = sken.nextDouble();//Melakukan input ipk
                        queue.insert(nim,nama,ipk);
                        System.out.println("---------------------");
                        System.out.println("");
                    }
                    break;
                }case 2 : {
                    if(queue.isEmpty()){
                        System.out.println(" Queue Kosong!!! ");
                    }else {
                        queue.tampilQueue();
                    }
                    break;
                }case 3 : {
                    if(queue.isEmpty()){
                        System.out.println(" Queue Kosong!!! ");
                    }else {          
                        System.out.println("  Hapus data -->>    ");
                        Node y = queue.hapus();
                        if( y != null ){
                            System.out.println("-------------------------");
                            System.out.println(" Data sudah dihapus !!!  ");
                            System.out.println("-------------------------");
                            System.out.println("");
                        }else{
                            System.out.println("--------------------------");
                            System.out.println("Data tidak dapat dihapus!!!");
                            System.out.println("--------------------------");
                            System.out.println("");
                        }
                    }
                    break;
                                      
                }case 4 :{
                    queue.clear();//memanggil method clear pada kelas tumpukan untuk mengosongkan semua data
                    break;
                }
            }
      
        }while(menu > 0 && menu < 5);
    } // end main()
} // end class QueueWithLink
////////////////////////////////////////////////////////////////

Tidak ada komentar:

Posting Komentar