2011-03-16

Secara sederhana diartikan dengan :
* sekumpulan data yang seolah-olah diletakkan di atas data yang lain
* koleksi dari objek-objek homogen

Stack berarti tumpukan. Jika dikaitkan dengan struktur data, Stack berarti sekumpulan data yang organisasi atau strukturnya bersifat tumpukan atau menyerupai tumpukan.

“Top “ merupakan pintu untuk keluar masuknya elemen – elemen stack. A, B, dan C merupakan suatu koleksi. Dari ilustrasi dapat digambarkan bahwa C merupakan elemen yang terakhir memasuki stack namun pertama keluar dari stack. Begitu sebaliknya dengan A. A merupakan elemen pertama yang memasuki tumpukan namun terakhir saat keluar dari tumpukan.

Di dalam gambar juga terlihat urutan masuk dan keluar yang berkebalikan. Elemen yang masuk pertama akan keluar erakhir dan sebaliknya. Prinsip ini telah dikenal dalam struktur data dengan nama prinsip LIFO (Last In First Out)
Ilustrasi Stack

• Terdapat dua buah kotak yang ditumpuk, kotak yang satu akan ditumpuk diatas kotak yang lainnya. Jika kemudian stack 2 kotak tadi, ditambah kotak ketiga, keempat, kelima, dan seterusnya, maka akan diperoleh sebuah stack kotak yang terdiri dari N kotak.

Ilustrasi Stack – Cont.

clip_image001
Ciri Stack :

1. - Elemen TOP (puncak) diketahui
2. - penisipan dan penghapusan elemen selalu dilakukan di TOP
3. - LIFO
4. - Pemanfaatan Stack :
5. - Perhitungan ekspresi aritmatika (posfix)
6. - algoritma backtraking (runut balik)
7. - algoritma rekursif

Operasi Stack yang biasanya :

· buat stack (stack) – create: membuat sebuah stack baru yang masih kosong, dan beberapa selektor yang lain.

* Push (input E : typeelmt, input/output data : stack): menambahkan sebuah elemen ke stack
* Pop (input/output data : stack, output E : typeelmt ) : menghapus sebuah elemen stack

·IsEmpty (): fungsi untuk menentukan apakah stack dalam keadaan kosong atau tidak

·IsFull () : fungsi untuk memeriksa apakah stack yang ada sudah penuh
1. buat stack (stack) – create

* membuat sebuah stack baru yang masih kosong
* spesifikasi:

1. — tujuan : mendefinisikan stack yang kosong
2. — input : stack
3. — syarat awal : tidak ada
4. — output stack : – (kosong)?
5. — syarat akhir : stack dalam keadaan kosong

2. stack kosong (stack) – empty

* fungsi untuk menentukan apakah stack dalam keadaan kosong atau tidak
* spesifikasi:

1. — tujuan : mengecek apakah stack dalam keadaan kosong
2. — input : stack
3. — syarat awal : tidak ada
4. — output : boolean
5. — syarat akhir : stack kosong bernilai true jika stack dalam keadaan kosong

3. stack penuh (stack) – full

* fungsi untuk memeriksa apakah stack yang ada sudah penuh
* spesifikasi:

1. — tujuan : mengecek apakah stack dalam keadaan penuh
2. — input : stack
3. — syarat awal : tidak ada
4. — output : boolean
5. — syarat akhir : stack penuh bernilai true jika stack dalam keadaan penuh

4. push (stack, info baru)?

* menambahkan sebuah elemen kedalam stack.
* spesifikasi:

1. — tujuan : menambahkan elemen, info baru pada stack pada posisi paling atas
2. — input : stack dan Info baru
3. — syarat awal : stack tidak penuh
4. — output : stack
5. — syarat akhir : stack bertambah satu elemen

5. pop (stack, info pop)?

* mengambil elemen teratas dari stack
* spesifikasi:

1. — tujuan : mengeluarkan elemen dari stack yang berada pada posisi paling atas
2. — input : stack
3. — syarat awal : stack tidak kosong
4. — output : stack dalam info pop
5. — syarat akhir : stack berkurang satu elemen

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.
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 ]

= *+AB – C D

Penggunaan notasi postfix dalam stack, misal :

2 14 + 5 * = 80



sumber : www.kazumastratos.net

Tidak ada komentar:

Posting Komentar