Wednesday, 8 December 2010

STACK DENGAN ARRAY

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