Stack sering dijumpai dalam kehidupan sehari- hari
“Secara sederhana, tumpukan bisa diartikan sebagai suatu kumpulan data yang seolah-olah ada data yang diletakan diatas data yang lain.”
Satu hal yang perlu kita ingat adalah bahwa kita bisa menambah (menyisipkan) data, dan mengambil (menghapus) data lewat ujung yang sama, yang disebut sebagai ujung atas tumpukan (top of stack).
Secara sederhana diartikan dengan :
• sebagai tumpukan dari benda
• sekumpulan data yang seolah-olah diletakkan di atas data yang lain
• koleksi dari objek-objek homogen
Penggunaan Stack :
History pada web browser.
Undo Log pada text editor.
LIFO ( Last In First Out)
“data yang disimpan terakhir akan diambil lebih dahulu, data yang disimpan pertama kali akan diambil paling akhir”
Operasi dasar stack :
Push : digunakan untuk menambah item pada stack pada tumpukan paling atas
Pop : digunakan untuk mengambil item pada stack pada tumpukan paling atas
Clear : digunakan untuk mengosongkan stack
IsEmpty : fungsi yang digunakan untuk mengecek apakah stack sudah kosong
IsFull : fungsi yang digunakan untuk mengecek apakah stack sudah penuh
Inisialisasi
Pada mulanya isi top dengan -1, karena array dalam C dimulai dari 0, yang berarti stack adalah KOSONG!
Top adalah suatu variabel penanda dalam STACK yang menunjukkan elemen teratas Stack sekarang. Top Of Stack akan selalu bergerak hingga mencapai MAX of STACK sehingga menyebabkan stack PENUH!
Fungsi isFull
Untuk memeriksa apakah stack sudah penuh ?
Dengan cara memeriksa top of stack, jika sudah sama dengan MAX_STACK-1 maka full, jika belum (masih lebih kecil dari MAX_STACK-1) maka belum full
Fungsi isEmpty
Untuk memeriksa apakah stack masih kosong?
Dengan cara memeriksa top of stack, jika masih -1 maka berarti stack masih kosong!
Fungsi Clear
Untuk mengosongkan stack
Stack akan dianggap kosong bila ujung atas stack pada posisi -1
Pendeklarasian stack dengan array
Proses pendeklarasian stack adalah proses pembuatan struktur stack dalam memori. Karena stack dapat direpresentasikan dalam 2 cara, maka pendeklarasian stack pun ada 2 yaitu:
Suatu stack memiliki beberapa bagian yaitu
• top yang menunjuk posisi data terakhir (top)
• elemen yang berisi data yang ada dalam stack. Bagian ini lah yang berbentuk array.
Deklarasi stack dengan array:
struct stack
{
int elemen[10]; //elemen int top;
};
Apakah Push itu ?
>Untuk memasukkan elemen ke stack, selalu menjadi elemen teratas stack (yang ditunjuk oleh Top of stack)
>Tambah satu (increment) nilai top of stack lebih dahulu setiap kali ada penambahan elemen stack.
>Asalkan stack masih belum penuh, isikan data baru ke stack berdasarkan indeks top of stack setelah diincrement sebelumnya.
Langkah operasi ini adalah :
• Periksa apakah stack penuh. Jika tidak penuh maka proses push dilaksanakan dan jika stack penuh, maka proses push digagalkan.
• Proses push-nya sendiri adalah dengan menambah field top dengan 1, kemudian elemen pada posisi top diisi dengan elemen data baru.
• if(p->top==size-1)
cout<<"STACK penuh ";
else
p->elemen[++p->top]=value;
Apakah Pop itu ?
> Untuk mengambil elemen teratas (data yang ditunjuk oleh Top of stack) dari stack.
> Ambil dahulu nilai elemen teratas stack dengan mengakses top of stack, tampilkan nilai yang akan dipop, baru dilakukan decrement nilai top of stack sehingga jumlah elemen stack berkurang
Dengan cara :
1. Ambil dahulu nilai elemen teratas stack dengan mengakses TOP of STACK.
2. Tampilkan nilai yang akan diambil.
3. Lakukan decrement nilai TOP of STACK sehingga jumlah elemen stack berkurang 1
Langkah operasi pop pada stack yang menggunakan array adalah terlebih dahulu memeriksa apakah stack sedang keadaan kosong, jika tidak kosong maka data diambil pada posisi yang ditunjuk oleh posisi top, kemudian posisi top – 1.
if (p->top==-1)
{
cout<<"STACK kosong";
return -1;
}
else
return p->elemen[p->top--];
Fungsi IsFull
Digunakan untuk memeriksa apakah kondisi stack sudah penuh
Dengan cara memerika Top Of Stack :
Jika TOP of STACK = MAX_STACK-1 maka FULL (Penuh).
Jika TOP of STACK < MAX_STACK-1 maka belum penuh
Operasi ini akan memberikan nilai true (1) jika field top sama dengan size-1.
if(p->top==size-1)
cout<<"STACK penuh ";
Fungsi IsEmpty
Operasi ini merupakan operasi untuk mencek isi dari suatu stack dalam keadaan kosong atau berisi. Operasi ini memiliki 2 (dua) kondisi boolean yaitu :
a. True jika stack tersebut kosong atau dapat dikatakan NOEL(S) = 0.
b. False jika stack tersebut tidak dalam kondisi kosong atau dapat dikatakan NOEL(S) > 0.
Operator ini berfungsi untuk menentukan apakah suatu stack adalah stack kosong. Operasinya akan bernilai boolean, dengan definisi sebagai berikut :
ISEMPTY(S) = true, jika S adalah stack kosong.
= false, jika S bukan stack kosong.
atau
ISEMPTY(S) = true, jika NOEL(S) = 0.
= false, jika NOEL(S) 0.
Fungsi Clear
Digunakan untuk mengosongkan stack / membuat stack hampa sehingga Top pada Stack berada kembali di posisi Top = -1
Void clear ()
{
Tumpuk .data = tumpuk . top = -1
printf(“Data clear”);
}
Kesimpulan
Stack adalah suatu koleksi atau kumpulan item data yang teroganisasi dalam bentuk urutan linear, yang operasi pemasukan dan penghapusan datanya dilakukan pada salah satu sisinya. Pada stack, jarang sekali dilakukan traversal, karena keunikan Stack justru pada operasi yang hanya menyangkut elemen TOP. Namun dibutuhkan traversal misalnya untuk mencetak isi Stack.
Pada stack, elemen yang diproses hanyalah elemen pada TOP. Maka hampir tidak pernah dilakukan search.
Saran
Penggunaan stack pada struktur data sangat bermanfaat untuk para pemrogram untuk melakukan suatu pemakain dalam informatika misalnya untuk meresenpetasi pemanggilan prosedur, perhitungan ekspresi aritmatika, rekursifitas, backtracking. Gunakan stack pada program yang operasinya selalu dilakukan pada elemen yang paling atas.