Algoritma untaian tumpukan (stack) pada java


Pada Algorimta atau Pemrograman di komputer di kenal yang namanya konsep Stack pada struktur data dasar yaitu tumpukan dari untaian (linked list). yang umumnya digunakan untuk menyimpan informasi yang dapat di akses sesuai dengan keperluan tertentu. yaitu dengan algoritma menyimpan data, mengakses data tersebut. 

Konsep Stack
Tumpukan atau Stack ini merupakan sebuah struktur data yang meniru bagaimana cara proses menyimpan dan mengambil satu benda pada suatu tumpukan dilantai atau di kotak. jika kamu perhatikan ketika kita menyimpan buku ke dalam kotak (push)  dan pengambilan buku (pop) dalam konsep stack ini.
sehingga dapat di sebutkan bahwa konsep stack tersebut LIFO (Last In First Out) yakni yang terakhir kali disimpan pada tumpukan adalah yang pertama di ambil karena berada pada urutan teratas dari tumpukan.
http://www.codeproject.com/KB/dotnet/Stacks/Stack.jpg 

Coba perhatikan gambar diatas, dapat dijelaskan bahwa awalnya lantai, kotak, atau lemari itu kosong, kemudian item pertama di masukkan, selanjutnya kedua. kemudia dilakukan pengambilan (push) maka yang paling ataslah yang pertama di ambil. 

http://hellokrista.com/wp-content/uploads/2015/01/o-STACK-OF-BOOKS-facebook.jpg
maka dari penjelasan algoritma diatas, dapat di ambil konsep Stack  yaitu menggunakan larik (array). dimana terdapat bagian item yaitu data yang disimpan atau diambil serta bagian atas dan bagian bawah atau top dan bottom. dengan begitu menggunakan bahasa pemrograman java yakni seperti berikut :
Langkah 1 : Class Item

class item {
    public int  data ;
    public item sesudah;
    public item sebelum;
    public item (int id)
    {
        data = id;
    }
    public void tampilkanLink()
        { System.out.print("{"+ data +"}");}
    }

Langkah 2 : Class Stack

class tumpukan{
    private item atas;
    private item bawah;

public tumpukan(){
    atas = bawah = null;
}
public boolean kosong(){
    return (atas==null);
}
public void ditambah (int id){
    item itembaru = new item(id);
        if(atas == null){
            atas = bawah = itembaru;
        }else{
            atas.sesudah = itembaru;
            itembaru.sebelum = atas;
            atas = itembaru;
        }

}
public item dibuang(){
    item temp = null;
        if(atas == null){
            System.out.print(" stack is empty ");
        }else if (atas == bawah){
            temp = atas ; atas = bawah = null;} 
        else{ 
             temp = atas;
             atas = atas.sebelum;
             atas.sesudah = null;
            }
        return temp;
}

public void tampilkan(){
    item current = bawah;
        if(current == null)
        {  
        System.out.println("-------------------------");
        System.out.println("-- STATUS DATA STACK   --");
        System.out.println("-------------------------");
        System.out.println(" Stack kosong ");
        }else while(current != null){
            current.tampilkanLink();
            current = current.sesudah;
        } System.out.println("");
}
}

Langkah 3 : Main Class Stack


public class Stack {
    public static void main(String[] args) {
        
        tumpukan test = new tumpukan();
        System.out.println("-------------------------");
        System.out.println("-- STRUKTUR DATA STACK --");
        System.out.println("-------------------------");
        test.ditambah(22);
        test.ditambah(44);
        test.ditambah(66);
        test.ditambah(88);
        test.tampilkan();
        
        System.out.println("-------------------------");
        System.out.println("-- DELETE STACK ATAS   --");
        System.out.println("-------------------------");
        
        while (!test.kosong()){
            item alink = test.dibuang();
            System.out.print("HAPUS");
        alink.tampilkanLink(); 
            System.out.println("");
        }
        test.tampilkan();
    
}    
}

Hasil : Stack

Demkian penjelasan mengenai konsep stack atau Tumpukan dengan Implementasinya pada Java. semoga bermanfaat. dipersilahkan kripik pedasnya yang konstruksif. ^_^

0 comments:

Post a Comment