Senin, 26 November 2012

Struktur data - LINKED LIST

//Tugas ke_tujuh
/*
    Nama    : Ati Tasmiati Dewi
    Kelas    : G2
*/


import java.util.Scanner;
class Node {
    private String Nim;
    private String Nama;
    private 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 LinkList {
    private Node first;
    public LinkList() {
        first = null;
    }
// -------------------------------------------------------------
    public void insertFirst(String nim, String nama, double ipk) {
        Node newNode = new Node(nim, nama, ipk);
        newNode.next = first;
        first = newNode;
    }
// -------------------------------------------------------------
    // mencari data (data yang dicari --> dat)
    public Node cari(String nama) {
        Node indek = first; // membuat node indek yang "difungsikan" sebagai pointer dan di-set menunjuk ke Node yang ditunjuk juga oleh pointer FIRST
        while(!indek.getNama().equals(nama)) {
            if(indek.next == null) // jika NEXT dari Node yang ditunjuk oleh pointer indek == NULL, maka
                return null; // data tidak ditemukan
            else // jika tidak NULL, maka
                indek = indek.next; /* lanjutkan ke node berikutnya, yaitu pointer indek di-set menunjuk ke Node yang ditunjuk oleh NEXT dari Node yang
                                    ditunjuk oleh pointer indek mula-mula */
        }
        return indek; // data ditemukan
    }
// -------------------------------------------------------------
    // menghapus data (data yang dicari --> dat)
    public Node hapus(String nim) {
        Node indek1 = first; /* membuat node indek1 dan node indek2 yang "difungsikan" sebagai
                             pointer dan di-set menunjuk ke Node yang ditunjuk juga oleh pointer FIRST*/
        Node indek2 = first;
        while(!indek1.getNIM().equals(nim)) { // mencari data yang akan dihapus
            if(indek1.next == null)
                return null; // data tidak ditemukan
            else { // jika data ditemukan, maka
                indek2 = indek1; // pointer indek2 di-set untuk menunjuk ke Node yang ditunjuk oleh pointer indek1
                indek1 = indek1.next; // pointer indek1 di-set untuk menunjuk ke Node yang ditunjuk oleh NEXT dari pointer indek1 sebelumnya
            }
        }
        if(indek1 == first) // jika pointer indek1 menunjuk Node yang sama dengan yang ditunjuk oleh pointer first, maka
            first = first.next; // pointer first di-set menunjuk Node yang ditunjuk oleh Next dari Node yang ditunjuk oleh pointer first sebelumnya
        else
            indek2.next = indek1.next; /* Next dari Node yang ditunjuk oleh pointer indek2 di-set untuk menunjuk Node yang ditunjuk oleh Next dari Node
                                        yang ditunjuk oleh pointer indek1 */
        return indek1;
    }
// -------------------------------------------------------------
    public void tampilList() {
        Node indek = first;
       
        System.out.println("-------------------------------");
        System.out.println(" Nim        Nama           Ipk ");
        System.out.println("-------------------------------");
       
        //for(Node i=indek  ; i!-;1--){
                    //while(indek != null) {
                do{
            indek.tampilNode();//menampilkan jika data bukan nul
                       
                       
            indek = indek.next;//lanjut ke index selanjutnya
        }
                while(indek!=null);
        System.out.println("-------------------------------");
        System.out.println("");
    }
// -------------------------------------------------------------
} // end class LinkList
////////////////////////////////////////////////////////////////
class Prak07_11520244043{
    public static void main(String [] args) {
        LinkList list = new LinkList();
          Scanner sken = new Scanner(System.in);
        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. Cari Data      ");
            System.out.println("  4. Hapus Data     ");
            System.out.println("  5. Keluar         ");
            System.out.print("Pilihan anda --> : ");
              menu = sken.nextInt();
              System.out.println("");
            switch(menu) {
                case 1 : {
                    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
                    list.insertFirst(nim,nama,ipk);
                    System.out.println("---------------------");
                    System.out.println("");
                    break;
                }case 2 : {
                    list.tampilList();
                    break;
                }case 3 : {                   
                    System.out.println("    Cari data -->>   ");
                    System.out.print("  Masukkan NAMA : ");
                    nama = sken.next();//Melakukan input nim
                    System.out.println("---------------------");
                    System.out.println("");
                    System.out.println("---------------------");
                    System.out.println("      Hasil cari     ");
                    System.out.println("---------------------");
                    System.out.println(" Nama Mahasiswa : "+nama);
                    Node x = list.cari(nama);
                    if( x != null){
                        System.out.println("-----------------------");
                        System.out.println("    Data ditemukan !!! ");
                        System.out.println("-----------------------");
                        System.out.println("");
                    }else{
                        System.out.println("------------------------");
                        System.out.println("   Data tidak ditemukan ");
                        System.out.println("------------------------");
                        System.out.println("");
                    }
                    break;
                }case 4 :{                   
                    System.out.println("  Hapus data -->>    ");
                    System.out.print(" Masukkan Nim : ");
                    nim = sken.next();//Melakukan input nim
                    System.out.println("---------------------");
                    System.out.println("");
                    System.out.println("---------------------");
                    System.out.println("      Hapus Data     ");
                    System.out.println("---------------------");
                    System.out.println(" Nim Mahasiswa : "+nim);
                    Node y = list.hapus(nim);
                    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;
                }
            }
       
        }while(menu > 0 && menu < 5);
    } // end main()
} // end class LinkList2App
////////////////////////////////////////////////////////////////

Tidak ada komentar:

Posting Komentar