Stack
Stack
Stack atau tumpukan adalah kumpulan elemen
yang hanya dapat ditambah dan atau dihapus
dari satu ujung (gerbang) yang sama
Dalam arti bahwa seolah-olah ada satu elemen
yang diletakkan diatas elemen yang lain
Stack mempunyai sifat LIFO (Last In First Out)
dimana elemen yang terakhir masuk akan
pertama kali keluar
Representasi stack dapat dilakukan dengan
menggunakan Array atau Linked List
Stack
Suatu susunan koleksi data dimana data dapat
ditambahkan dan dihapus selalu dilakukan pada
bagian akhir data, yang disebut dengan top of
stack
Stack bersifat LIFO (Last In First Out)
Data yang terakhir masuk ke dalam stack akan
menjadi yang pertama keluar dari stack
Compo
Compo
Compo
VCD
TV
TV
VCD
VCD
TV
TV
Operasi Stack
PUSH
I
N
Push
POP
O
U
T
stack
Stack dapat dibuat dengan menggunakan array
atau linked list
Representasi stack dengan menggunakan array
dapat dilakukan dengan asumsi bahwa elemen
maksimal suatu stack tidak boleh melebihi
maksimum banyak elemen atau ukuran array
Untuk itu, maka diperlukan adanya suatu
penunjuk atau suatu nama yang mencatat posisi
puncak elemen stack tersebut
Deklarasi stack
Bentuk deklarasi dari Stack ada 2 (dua) yaitu
Deklarasi ke- I :
#define MaxS n
TypeData Isi[MaxS];
TypeData Top;
Deklarasi II ke- 2 :
#define MaxS n
Struct Stack
{
TypeData Isi[MaxS];
TypeData Top;
};
Program Stack
Inisialisasi Stack
Pada mulanya isi top dengan -1, karena
array dalam bahasa C dimulai dari 0,
yang berarti bahwa data stack adalah
KOSONG!
Top adalah suatu variabel penanda
dalam Stack yang menunjukkan elemen
teratas data Stack sekarang. Top Of
Stack akan selalu bergerak hingga
mencapai MAX of STACK yang
menyebabkan stack PENUH!
Operasi push
Operasi Push adalah operasi memasukkan elemen
kedalam stack
Jika
stack
direpresentasikan
dengan
menggunakan array, maka elemen array yang
dimasukkan tidak boleh melebihi ukuran stack
Maka dengan demikian harus ada nama sebagai
penunjuk ke posisi elemen Puncak (Top) dari stack
dan penunjuk isi maksimum dari stack (Max)
Operasi Push dapat dilakukan jika stack belum
mencapai Max
Fungsi push
Fungsi Push untuk memasukkan elemen kedalam
Stack yaitu
Void Push (Stack &S, char Data)
{
if (S.Top < MaxS)
{
S.Top++;
S.Isi[S.Top] = Data;
}
else
cout<<Stack Penuh;
}
Operasi Push
Program Stack
Fungsi IsFull
Adalah operasi yang akan digunakan untuk mengecek
apakah stack penih atau tidak
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
Suatu Stack dikatakan penuh, jika S.Top bernilai
MaxS[S.Top=MaxS).
Jika S.Top = MaxS, maka fungsi akan mengembalikan
nilai True, jika tidak maka fungsi akan mengembalikan
nilai False
Program Stack
Ilustrasi Stack pada kondisi Full
Program Stack
Fungsi IsEmpty
Program Stack
Fungsi Pop
Operasi Pop adalah operasi yang dilakukan
terhadap Stack dengan menghapus elemen
yang berada paling puncak dari Stack
Setiap kali operasi Pop dilakukan, maka
petunjuk Top akan berkurang satu
Tampilkan terlebih dahulu nilai elemen
teratas stack dengan mengakses indeksnya
sesuai dengan top of stacknya, baru dilakukan
decrement dari nilai top of stacknya sehingga
jumlah elemen stack berkurang.
Operasi Pop dapat dilakukan jika Stack tidak
kosong
Program Stack
Fungsi pop
Fungsi Pop untuk menghapus elemen dari Stack
adalah sebagai berikut :
Void Pop (Stack &S, Char &Hsl)
{
if (S.Top ! = 0)
{
Hsl = S.Isi[S.Top];
S.Top--;
}
else
cout<<Stack kosong;
}
Program Stack
Fungsi Print
Untuk menampilkan semua
elemen-elemen data Stack
Dengan cara me-loop semua
nilai array secara terbalik,
karena kita harus mengakses
dari indeks array tertinggi
terlebih dahulu baru ke indeks
yang lebih kecil!
Program Stack
Mencetak Stack
Isi suatu stack dapat dicetak dengan menggunakan
fungsi berikut :
Void Cetak (Stack S)
{
int I;
cout<<end<<Isi Stack : ;
if (S.Top! = 0)
{
for (i=1; i<=S.Top; i++)
cout<<S.Isi[i];
}
else
cout<<Stack Kosong;
}
Fungsi Peek
Digunakan untuk melihat top of stack
Karakteristik stack
Karakteristik dari suatu Stack adalah :
Elemen Stack yaitu item-item data yang terdapat
dalam stack
Top menunjukkan posisi puncak pada stack
Max menunjukkan banyaknya maksimum item
data dari stack
Stack kosong tidak mungkin dilakukan Pop, karena
akan menyebabkan underflow
Stack Penuh tidak mungkin dilakukan Push,
karena akan menyebabkan Overflow
posftix
Jika sudah semua soal dibaca, pop semua isi stack dan push ke
postfix sesuai dengan urutannya
Contoh lain
a+b*c-d
Stack (kosong) dan Postfik (kosong)
Scan a
Postfik: a
Scan +
Stack: +
Scan b
Postfik: ab
Contoh
Scan c
Postfik: abc
Scan d
Postfik: abc*+d
Postfix Evaluator
Terima Kasih