Stack

Dalam computer science, stack adalah tipe data abstrak yang berfungsi sebagai kumpulan elemen-elemen. Urutannya adalah LIFO (Last-In-First-Out) dimana elemen yang terakhir dimasukkan akan menjadi yang pertama dikeluarkan. Ada 2 operasi utama, yaitu push dan pop. Push berarti memasukkan data baru ke dalam stack melalui top atau ujung teratas sedangkan push berarti mengeluarkan data teratas dari stack melalui top atau ujung teratas.


Source Code MainStack

package stackLinkedList;
import java.util.Scanner;
public class MainStack {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        byte pil;
        cStack stck = new cStack();
        do{
            System.out.println(" ");
            System.out.println("Aplikasi Stack");
            System.out.println("1. Isi Data (Push)");
            System.out.println("2. Hapus Data (Pop)");
            System.out.println("3. Cetak Data (Print)");
            System.out.println("4. Keluar (Exit)");
            System.out.print("Pilih : ");
            pil = s.nextByte();

            switch(pil){
                case 1 :
                    System.out.print("Masukkan Nama Mahasiswa : ");
                    s = new Scanner(System.in);
                    String nama = s.nextLine();
                    cItem nm = new cItem(nama);
                    stck.push(nm);
                    break;
                case 2 :
                    cItem t = stck.pop();
                    if(t!=null) System.out.println(t.getNama()+" Berhasil Dikeluarkan!");
                    break;
                case 3 :
                    stck.print();
                    break;
                case 4 : System.out.println("Terima Kasih!");
            }
        }while(pil!=4);
    }
}



Source Code cItem

package stackLinkedList;
public class cItem {
    private String namamhs;
    cItem next, prev;
    cItem(String n){
        namamhs = n;
        System.out.println("Item "+namamhs+" dibuat. .");
    }
    public String getNama(){
        return namamhs;
    }
}


Source Code cStack

package stackLinkedList;
public class cStack {
    cItem top, bottom, temp;
    cStack(){
        top = bottom=null;
        int jml =0;
        System.out.println("Object Stack dibuat. .");
    }
    public void push(cItem baru){
        if(top==null) top = bottom = baru;
        else{
            top.prev = baru;
            baru.next=top;
            top=baru;
        }
        System.out.println("Data Mahasiswa Berhasil Dimasukkan!");
    }
    
    public cItem pop(){
        if(top==null){
            System.out.println("Data Mahasiswa Kosong!");
            return null;
        }
        else if(top.next==null){
            temp =top;
            top=bottom=null;
            return temp;
        }
        else{
            temp = top;
            top=top.next;
            temp.next=null;
            temp.prev=null;
            return temp;
        }
    }
    
    public void print(){
        byte i=1;
        if(top==null) System.out.println("Daftar Mahasiswa Kosong!");
        else{
            System.out.println("Daftar Nama Mahasiswa");
            for (cItem t = top; t != null; t=t.next) {
                System.out.println(i+". "+t.getNama());
                i++;
            }
        }
    }
}


Output Program


Push atau Memasukkan Data serta Daftar Datanya


Pop atau Mengeluarkan Data


Print atau Mencetak Data Setelah Data Dikeluarkan