Anda di halaman 1dari 19

Pertemuan 7.

Stack / Tumpukan

TI-FST-Universitas Sanata Dharma


Apa Stack ?
Sifat stack/tumpukan:
 Stack adalah kumpulan komponen yang
tersusun dari sederetan item atau obyek.
 Penambahan atau pengurangan item
hanya dapat dilakukan di satu ujung saja
 Menyisipkan atau menghapus item
mengikuti aturan LIFO l(Last In First Out)

2
Contoh
 Tumpukan kertas
 Tumpukan buku tabungan
 Tumpukan piring
Operasi Stack

 push(sesuatu) ke top dari


stack b
 pop() sesuatu keluar stack a

dari urutan top


 top() / peek() menampilkan
sesuatu yang ada di atas
stack
a
Operasi Stack - Lain

• isEmpty: cek apakah stack kosong


• Size : mencari jumlah elemen yang telah
dimasukkan dalam stack
• isFull : cek apakah stack penuh

5
Aplikasi
 Perintah undo dalam editor teks
 Pengecekan keseimbangan kurung buka dan
tutup dalam sebuah operasi
 Evaluasi ekspresi aritmetik bentuk postfix
 Mengubah ekspresi infix ke postfix
 Menemukan palindrome : “Able was I ere I saw
Elba”, “A man, a plan, a canal: Panama”, “Abba”,
“Kasur Rusak”
 Menelusuri pemanggilan method
 Implementasi rekursi
Implementasi Stack

 Ada 2
 Implementasi contiguous
 Masukan data disimpan dalam array
 Data diakses menggunakan indeks
 Implementasi linked
 Masukan data disimpan dengan linked list
 Data diakses menggunakan reference
Contiguous Stack
Stack Stack
0 Tom bottom 0
1 Tom bottom
John 1 John
2 Mary 2 Mary
3 Sue 3 Sue
4 Jim 4 Jim
5 Rick 5 Rick top
6
7
Bob 6 --
8
Barb 7 --
Diana top 8 --
9 -- 9 --
10 -- 10 --
11 -- 11 --
12 -- 12 --
13 -- 13 --
Setelah 9 data dimasukkan ke stack Setelah 3 data di pop
Stack – Implementasi Array
 Elemen ditambahkan dari indeks terkecil
menuju ke lebih besar
 Memiliki variabel untuk menyimpan posisi
indeks elemen teratas
Implementasi Kelas Stack
class Stack
{
private int maxSize;
private char[ ] dataStack;
private int top;

public Stack(int s) // constructor


{
maxSize = s;
stackArray = new char[maxSize];
top = -1;
}
}
Keterbatasan Stack – Array
 Data yang disimpan bisa penuh,
sehingga ukuran stack harus
didefinisikan terlebih dahulu dan tidak
dapat diubah.
 Harus menyertakan exception jika
stack sudah penuh.
Linked Stack
TOP M

J
P C

A
H

 Top dari stack diletakkan di depan list


 pop()

 push(“A”)
APLIKASI
Deteksi Kurung Seimbang

 (((x + y) + ((a+b) * c)) / d )

 (
 ((
 (((
 ((
 (((
 ((((
 (((
 ((
 ( seimbang

Infix, postfix
 Infix.
 Familiaruntuk pengguna
 Mudah mengubah urutan operasi dengan
meletakkan / menghapus kurung
 Postfix
 Lebih mudah untuk program.
 Tidak diperlukan kurung dan operator
mendahului motasi
a + (b - c) * d abc-d*+
a+b-c*d ab+cd*-
Menghitung ekspresi

 Mengubah infix ke postfix


a + (b - c) * d abc-d*+

 Mengevaluasi postfix

 Stack bagus digunakan untuk kedua


kasus tersebut
Evaluasi Ekspresi Postfix
Evaluasi Ekspresi Postfix
Implementasi Pemanggilan Prosedur

Anda mungkin juga menyukai