シーケンススタック//入出力

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

}