Misal diberikan Stack S sebagai berikut :
S = [ S1, S2, .........., ST ] * maka TOP(S) = ST.
Untuk menunjukkan jumlah elemen suatu stack digunakan notasi NOEL. Dari stack di atas, maka NOEL(S) = T. Selanjutnya, jika diberikan sebuah stack S = [A,B,C,D], maka stack S ini dapat digambarkan sebagai berikut :
* OPERASI DASAR PADA STACK
Ada empat operasi dasar yang didefinisikan pada stack, yaitu :
1. CREATE(stack)
2. ISEMPTY(stack)
3. PUSH(elemen,stack)
4. POP
1. CREATE
Operator ini berfungsi untuk membuat sebuah stack kosong dan didefinisikan bahwa :
NOEL(CREATE(S)) = 0 dan TOP(CREATE(S)) = null
2. ISEMPTY
Operator ini berfungsi untuk menentukan apakah suatu stack adalah stack kosong. Operasinya akan bernilai boolean, dengan definisi sebagai berikut :
ISEMPTY(S) = true, jika S adalah stack kosong
= false, jika S bukan stack kosong
Atau
ISEMPTY(S) = true, jika NOEL(S) = 0
= false, jika NOEL(S) * 0
Catatan : ISEMPTY(CREATE(S)) = true.3. PUSH
Operator ini berfungsi untuk menambahkan satu elemen ke dalam stack. Notasi yang digunakan adalah :
PUSH(E,S)
Artinya : menambahkan elemen E ke dalam stack S.
Elemen yang baru masuk ini akan menempati posisi TOP.
Jadi : TOP(PUSH(E,S)) = E.
Akibat dari operasi ini jumlah elemen dalam stack akan bertambah, artinya NOEL(S) menjadi lebih besar atau stack menjadi tidak kosong (ISEMPTY(PUSH(E,S)) = false).
4. POP
Operator ini berfungsi untuk mengeluarkan satu elemen dari dalam stack.Notasinya:
POP(S)
Elemen yang keluar dari dalam stack adalah elemen yang berada pada posisi TOP.
Akibat dari operasi ini jumlah elemen stack akan berkurang atau NOEL(S) berkurang dan elemen pada posisi TOP akan berubah. Operator POP ini tidak dapat digunakan pada stack kosong, artinya :
POP(CREATE(S)) = error condition
Catatan : TOP(PUSH(E,S)) = E
contoh program stack :
#include <iostream.h>
#include <conio.h>
#define max 10
struct Tumpukan{
int atas;
int data[max];
}T;
void awal(){
T.atas=-1;
}
int kosong(){
if(T.atas==-1)
return 1;
else
return 0;
}
int penuh(){
if(T.atas==max-1)
return 1;
else
return 0;
}
void input(int data){
if(kosong()==1)
{T.atas++;
T.data[T.atas]=data;
cout<<"Data "<<T.data[T.atas]<<" masuk ke stack";}
else if(penuh()==0)
{T.atas++;
T.data[T.atas]=data;
cout<<"Data "<<T.data[T.atas]<<" masuk ke stack";}
else
cout<<"Tumpukan penuh";
}
void hapus(){
if(kosong()==0){
cout<<"Data teratas sudah terambil";
T.atas--;
}
else
cout<<"Data kosong";
}
void tampil(){
if(kosong()==0)
{for(int i=T.atas;i>=0;i--)
{cout<<"\nTumpukan ke "<<i<<"="<<T.data[i];}
}
else
cout<<"Tumpukan kosong";
}
void bersih(){
T.atas=-1;
cout<<"Tumpukan kosong!";
}
void main(){
int pil,data;
awal();
do
{
clrscr();
cout<<"1. Input\n2. Hapus\n3. Tampil\n4. Bersihkan\n5. Keluar\nMasukkan pilihan :";
cin>>pil;
switch(pil)
{case 1:cout<<"Masukkan data = ";cin>>data;
input(data);
break;
case 2:hapus();
break;
case 3:tampil();
break;
case 4:bersih();
break;
case 5: cout<<"Terimakasih, tekan enter untuk keluar";
}
getch(); }
while(pil!=5);}Screen Shot program sebagai berikut:
contoh study kasus :1. Buatlah program untuk memeriksa kelengkapan tanda kurung suatu bentuk
aritmetika
Tampilkan "benar" jika tanda kurung lengkap
Tampilkan "salah" jika tanda kurung tidak lengkap
Listing programnya adalah sebagai berikut:
Tampilkan "benar" jika tanda kurung lengkap
Tampilkan "salah" jika tanda kurung tidak lengkap
Listing programnya adalah sebagai berikut:
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
#define n 5
void main()
{
int s[n], top, panjang, i;
char input[20];
cout<<"MEMERIKSA TANDA KURUNG
BENTUK ARITMETIKA"<<endl<<endl<<endl;
top=-1;
cout<<"MASUKKAN JUMLAH KARAKTER
ARITMETIKA : ";
cin>>panjang;
cout<<"INPUTKAN BENTUK
ARITMETIKA : ";
for(i=1; i<=panjang; i++)
{
cin>>input[i];
}
for(i=1; i<=panjang; i++)
{
if(input[i]=='(')
{
top=top+1;
s[top]=input[i];
}
else if(input[i]==')')
{
if(top>-1)
{
input[i]=s[top];
top=top-1;
}
else
{
cout<<"BENTUK ARITMETIKA
SALAH";
goto bawah;
}
}
}
if(top==-1)
{
cout<<"BENTUK ARITMETIKA
BENAR";
}
else
{
cout<<"BENTUK ARITMETIKA
SALAH";
}
bawah:
cout<<endl<<endl<<"TERIMAKASIH";
getch();
}
|

Tidak ada komentar:
Posting Komentar