シーケンススタック//入出力
11637 ワード
#include
#include
#include
using namespace std;
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define MAXSIZE 100
#define exit
typedef char ElemType;
typedef struct
{
ElemType* base;//
ElemType* top;//
int stacksize;//
} SqStack;
void InitStack(SqStack& S)
{
// S
S.base = new ElemType[MAXSIZE];
if (!S.base)
exit(OVERFLOW);
S.top = S.base;
S.stacksize = MAXSIZE;
}
int StackEmpty(SqStack& S) //
{
if (S.top == S.base)
return 1;
else
return 0;
}
bool Push(SqStack& S, ElemType e) //
{
if (S.top - S.base == S.stacksize)
return ERROR;
*S.top++ = e;
return OK;
}
bool Pop(SqStack& S, ElemType& e) //
{
if (S.top == S.base)
return ERROR;
e = *--S.top;
return OK;
}
void DestroyStack(SqStack& S) //
{
free(S.base);
printf(" ");
}
bool GetTop(SqStack& S) //
{
if (S.top != S.base)
return *(S.top - 1);
}
void InitStack(SqStack& S);
int StackEmpty(SqStack& S);
bool Push(SqStack& S, ElemType e);
bool Pop(SqStack& S, ElemType& e);
void DestroyStack(SqStack& S);
int main()
{
SqStack S;
ElemType e;
int n;
InitStack(S);
cout << " :"; cin >> n;
for(int i = 0; i < n;i++)
{
cin >> e;
Push(S, e);
}
while (!StackEmpty(S))
{
Pop(S, e);
cout << e;
}
}