//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';
}