#include<iostream.h>
#include<stdlib.h>
#include<stdio.h>
#define OVERFLOW 0
#define OK 1
#define ERROR 0
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef int Status;
typedef int SElemType;
typedef struct
{//
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
Status InitStack(SqStack &S)
{
S.base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType));
if(!S.base) exit(OVERFLOW);
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return OK;
}
Status GetTop(SqStack S,SElemType &e)
{//
if(S.top=S.base) return ERROR;
e=*(S.top-1);
}
Status Puse(SqStack &S,SElemType e)
{//
if(S.top-S.base>=S.stacksize)
{
S.base=(SElemType *)realloc(S.base,(S.stacksize+STACKINCREMENT)
*sizeof(SElemType));
if(!S.base) exit(OVERFLOW);
S.top=S.base+S.stacksize;
}
*S.top++=e;
return OK;
}
Status Pop(SqStack &S,SElemType &e)
{//
if(S.top==S.base)return ERROR;
e=*(--S.top);
return OK;
}
#include"栈的基本就用.h"
void main()
{//
SqStack S;
int length;
SElemType e;
InitStack(S);
cout<<"请输入栈的长:length"<<endl;
cin>>length;
for(int i=0;i<length;i++)
{//
cin>>e;
GetTop(S,e);
}
for(i=0;i<length;i++)
{//
Pop(S,e);
cout<<e<<" ";
}
cout<<"\n";
}