- Stack adalah suatu urutan elemen yang elemennya dapat diambil dan ditambah hanya pada posisi akhir (top) saja.
- Dapat diartikan juga sebagai tumpukan dari benda
- Koleksi dari objek-objek homogen
- Contoh dalam kehidupan sehari-hari adalah tumpukan piring di sebuah restoran yang tumpukannya dapat ditambah pada bagian paling atas dan jika mengambilnya pun dari bagian paling atas pula. Lihat gambar 1.
Terdapat dua buah buku yang ditumpuk, buku yang satu akan ditumpuk diatas buku yang lainnya. Jika kemudian stack 2 buku tadi, ditambah buku ketiga, keempat, kelima, dan
seterusnya, maka akan diperoleh sebuah stack buku yang terdiri dari N kotak. dan buku yang akan diambil pertama ialah buku yang paling atas.
2 operasi
dasar yang bisa dilaksanakan pada sebuah
stack, yaitu:
- Operasi Push (menyisipkan data) operasi memasukkan data ke dalam stack atau menambahkan elemen pada urutan terakhir (paling atas).
- Operasi Pop (menghapus data) operasi mengambil sebuah elemen data pada urutan paling atas dan menghapus elemen tersebut dari sebuah stack.
-
buat stack (stack) - create
-
membuat sebuah stack baru yang masih kosong
- spesifikasi:
- tujuan : mendefinisikan stack yang kosong
- input : stack
- syarat awal : tidak ada
- output stack : - (kosong)
- syarat akhir : stack dalam keadaan kosong
2. stack kosong
(stack) - empty
- fungsi untuk menentukan apakah stack dalam keadaan kosong atau tidak
- spesifikasi:
- tujuan : mengecek apakah stack dalam keadaan kosong
- input : stack
- syarat awal : tidak ada
- output : boolean
- syarat akhir : stack kosong bernilai true jika stack dalam keadaan kosong
- fungsi untuk memeriksa apakah stack yang ada sudah penuh
- spesifikasi:
- tujuan : mengecek apakah stack dalam keadaan penuh
- input : stack
- syarat awal : tidak ada
- output : boolean
- syarat akhir : stack penuh bernilai true jika stack dalam keadaan penuh
4. push (stack,
info baru)
- menambahkan sebuah elemen kedalam stack.
- spesifikasi:
- tujuan : menambahkan elemen, info baru pada stack pada posisi paling atas
- input : stack dan Info baru
- syarat awal : stack tidak penuh
- output : stack
- syarat akhir : stack bertambah satu elemen
5. pop (stack,
info pop)
- mengambil elemen teratas dari stack
- spesifikasi:
- tujuan : mengeluarkan elemen dari stack yang berada pada posisi paling atas
- input : stack
- syarat awal : stack tidak kosong
- output : stack dalam info pop
- syarat akhir : stack berkurang satu elemen
7. Proses inisialisasi yaitu proses pembuatan stack kosong, biasanya dengan pemberian nilai untuk top.
Contoh Pemanfaatan Stack
-
Notasi Infix Prefix
-
Notasi Infix Postfix
Pemanfaatan
stack antara lain untuk menulis ungkapan dengan menggunakan notasi tertentu.
Contoh :
( A + B ) * (
C – D )
Tanda kurung
selalu digunakan dalam penulisan ungkapan numeris untuk mengelompokkan bagian
mana yang akan dikerjakan terlebih dahulu.
Dari contoh (
A + B ) akan dikerjakan terlebih dahulu, kemudian baru ( C – D ) dan terakhir
hasilnya akan dikalikan.
A + B * C – D
B * C akan
dikerjakan terlebih dahulu, hasil yang didapat akan berbeda dengan hasil notasi
dengan tanda kurung.
1. ( ) (Kurung)
2. ^ (Pangkat)
3. * / (Perkalian
atau pembagian)
4. + - (Penjumlahan
atau pengurangan)
Notasi Infix
Prefix
Cara penulisan
ungkapan yaitu dengan menggunakan notasi infix, yang artinya operator ditulis
diantara 2 operator.
Seorang ahli
matematika bernama Jan Lukasiewiccz mengembangkan suatu cara penulisan ungkapan
numeris yang disebut prefix, yang artinya operator ditulis sebelum kedua operand
yang akan disajikan.
Contoh :
Proses konversi
dari infix ke
prefix :
= ( A + B ) * ( C
– D )
= [ + A B ] * [ -
C D ]
= * [ + A B ] [ -
C D ]
= * + A B - C D
Contoh :
Contoh :
(2 + 8) / 2 * 5
10 / 2 * 5
5 * 5
25