Pengertian stack/tumpukan:
Kumpulan items yang teratur dimana items baru akan dimasukkan ke dan sebuah items akan dikeluarkan dari satu ujung yang sama, yaitu dari TOP sebuah stack.Struktur data linier dimana hanya bagian TOP-nya saja yang bisa diakses.Bersifat LIFO = Last In First Out. Bisa diimplementasikan menggunakan array atau Linked List.
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
OPERASI PADA STACK
2 operasi dasar yang bisa dilaksanakan
pada sebuah stack, yaitu:
ž Operasi Push (menyisipkan data)
memasukkan data ke dalam stack
ž Operasi Pop (menghapus data)
menghapus elemen yang terletak pada posisi paling atas dari sebuah stack
langkah-lngkah :
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 source code tentang progarn yang mampu melakukan pengecekan terhadap sebuah string yang di dalamnya mengandung satu atau beberapa pasang tanda delimeter yaitu tanda kurung biasa buka dan tutup ‘( )’, tanda kurung kurawal buaka dan tutup ‘{ }’,serta tanda kurung siku buka dan tutup ‘[ ]’. Program mengeluarkan pernyataan ‘benar’, jika struktur string sudah benar dan sebaliknya menguarkan pernyataan ‘salah’ jika struktur string salah. (ada tanda delimeter yang tidak mempunyai pasangan). Program harus mengimplementasikan struktur data stack dengan menggunakan array.
Contoh:
input:a{bc[d]e}f(g) output: BENAR
input:a{bc[d}e]f(g) outpur: SALAHContoh:
input:a{bc[d]e}f(g) output: BENAR
#include "stdio.h"
char data[50];char temp;
char stack[50];int awal;
int taruh;int benar=1;
void main()
{
char jwb;
do
{
printf("\tprogram delimeter checker\n\n");
printf("Input data anda: ");
scanf("%s",&data);
for(int i=0;i<=100;i++)
{
if(data[i]=='{' || data[i]=='(' || data[i]=='[')
{
stack[awal+1]=data[i]; awal++;
}
else if(data[i]=='}' || data[i]==')' || data[i]==']')
{
temp=stack[awal];stack[awal]=NULL;awal--;
if(temp=='{')
{ taruh='}'; }
else if(temp=='(')
{ taruh=')'; }
else if(temp=='[')
{ taruh=']'; }
if(taruh!=data[i])
{ benar=0; }
}
}
if(benar==1)
{
printf("\nhasil output: BENAR\n");
}
else
{
printf("\nhasil output : SALAH\n");
}
printf("apakah anda ingin mencoba lagi ?? [Y/N] : \n"); scanf("%s",&jwb);
printf("\n");
}while ((jwb=='y') || (jwb=='Y'));
}
semoga bermanfaat
0 komentar:
Posting Komentar