prak 7
#include <cstdlib>
#include <iostream>
#define maks 5
using namespace std;
class stack{
friend ostream& operator<<(ostream&, const stack&);
public:
stack();
int penuh(int);
int kosang(int);
void cetak();
void push(char);
char pop();
private:
char A[maks];
int banyak;
};
ostream& operator<<(ostream& out, const stack& s)
{
cout<<"\n isi stack : ";
for(int i=0;i<s.banyak;i++)
out<<s.A[i]<<" ";
}
stack::stack(){
banyak =0;
for(int i=0;i<maks;i++)
A[i]='0';
}
int stack::penuh(int s)
{
return s==maks?1:0;}
/*
int stack::kosong(int s)
{
return s==0?1:0;}
*/
void stack ::cetak()
{
cout<<"\n isi stack : ";
for(int i=0;i<banyak;i++)
cout<<A[i]<<" ";
}
void stack::push(char x)
{
cout<<"\n elemen masuk : "<<x;
if(penuh(banyak))cout<<"stack penuh";
else if (A[0]=='0'){
A[0]=x;
banyak++;
}
else{
for (int i=banyak; i>=0;i--)
A[i+1]=A[i];
A[0]=x;
banyak++;
}
}
char stack::pop()
{
cout<<"\n pop stack , elemen yang dipop :"<<A[0];
char temp=A[0];
for(int i=0;i<banyak;i++)A[i]=A[i+1];
A[banyak]='0';
banyak--;
return temp;
}
int main()
{
stack stack;
for(char c='a';c<'d';c++){
stack.push(c);
stack.cetak();
}
char p=stack.pop();
stack.cetak();
cout<<"\n\n cetak pakai overloding :"<<stack;
system("PAUSE");
return EXIT_SUCCESS;
}
No comments:
Post a Comment