Stack

Abstract Stack Concrete Stack Representation Invariant for Stack

 

STACK IMPLEMENTED USING AN ARRAY FOR THE DATA

 

//stack.h
#ifndef stack_h
#define stack_h

#include <iostream.h>

const Max = 8;

class Stack {
  int Top;
  char SData[Max];

  public:
    Stack ();
    Stack (char Ch);
    int Push (char Ch);
    int Pop (char &Ch);
    int Empty ();
    void CopyStack (Stack &S);
    void PrintStack ();
};
#endif

//stack.cc
#include "stack.h"

Stack::Stack () {
  Top = 0;
}

Stack::Stack (char Ch) {
  SData[0] = Ch;
  Top = 1;
}

int Stack::Push (char Ch) {
  if (Top<Max) {
    SData[Top++] = Ch;
    return 1;
  }
  else
    return 0;
}

int Stack::Pop (char &Ch) {
  if (Top>0) {
    Ch = SData[--Top];
    return 1;
  }
  else
    return 0;
}

int Stack::Empty () {
  return (Top==0);
}
void Stack::CopyStack (Stack &S) {
  S.Top = Top;
  for (int i=0; i<Top; i++)
    S.SData[i] = SData[i];
}

void Stack::PrintStack () {
  for (int i=Top-1;i>=0;i--)
    cout << SData[i];
  cout << '\n';
}


Back Home Up Next