PENGERTIAN 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
OPERASI PADA STACK :
- Operasi Push (menyisipkan data) memasukkan data ke dalam stack
- Operasi Pop (menghapus data)
menghapus elemen yang terletak pada posisi paling atas dari sebuah stack
OPERASI PADA STACK – Cont.
- Operasi Push
void Push (NOD **T, char item)
{
NOD *n;
n=NodBaru (item);
n->next=*T;
*T=n;
}
- Operasi Pop
char Pop (NOD **T)
{
NOD *n; char item;
if (!StackKosong(*T)) {
P=*T;
*T=(*T)->next;
item=P->data;
free(P);
}
return item;
}
1. 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
3. stack penuh (stack) - full
- 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
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 ]
= * + A B - C D
Notasi Infix Postfix:
Cara penulisan ungkapan yaitu dengan menggunakan notasi postfix, yang artinya operator ditulis sesudah operand.
Contoh :
Proses konversi
dari infix ke postfix :
= ( 6 - 2 ) * ( 5 + 4 )
= [ 6 2 - ] * [ 5 4 + ]
= [ 6 2 - ] [ 5 4 + ] *
= 6 2 - 5 4 + *
Contoh :
Penggunaan notasi postfix dalam stack, misal :
2 14 + 5 * = 80
Tidak ada komentar:
Posting Komentar
give me your comment