#include<stdio.h>
#include<stdlib.h>
#define OK 1
#define ERROR -1
#define STACKINITSIZE 10
#define STACKCREATSIZE 2
typedef int ElemType;
//顺序栈结构
typedef struct {
ElemType *elem;
int top;
int stacksize;
} SeqStack;
//初始化
int InitSTack(SeqStack *s) {
s->elem=(ElemType*)malloc(sizeof(ElemType)*STACKCREATSIZE);
s->stacksize=STACKCREATSIZE ;
s->top=0;
return OK;
}
//出栈
int Push(SeqStack *s,ElemType e1) {
ElemType *newbase,newspacesize;
if(s->top>=s->stacksize-1) {
newspacesize=(s->stacksize+STACKINITSIZE)*sizeof(ElemType);
newbase=(ElemType*)realloc(s->elem,newspacesize);
if(!(newbase))
return ERROR;
s->elem=newbase;
s->stacksize+=STACKINITSIZE;
}
s->elem[s->top]=e1;
s->top++;
return OK;
}
//入栈
int Pop(SeqStack *s,ElemType *e) {
if(s->top<=0)
return ERROR;
*e=s->elem[s->top-1];
s->top--;
return OK;
}
//取栈顶
int GetTop(SeqStack *s,ElemType *e) {
if(s->top<=0)
return ERROR;
*e=s->elem[s->top-1];
return OK;
}
//判空
int StackEmpty(SeqStack *s) {
if(s->top<=0)
return 1;
else
return 0;
}
//求深度
int StackDepth(SeqStack *s) {
return s->top;
}
//置空栈
int ClearStack(SeqStack *s) {
s->top=0;
return OK;
}
//打印栈
int PrintfStack(SeqStack *s) {
int i=0;
if(s->top<=0)
return 0;
while(s->top>=0) {
printf("%d,",s->elem[s->top]);
s->top--;
i++;
}
s->top=i;
return 0;
}
int main(void) {
SeqStack s;
ElemType e,e1;
scanf("%d",&e1);
InitSTack(&s);
Push(&s,e1);
// Pop(&s,&e);
// StackDepth(&s);
// ClearStack(&s);
// StackEmpty(&s);
// GetTop(&s,&e);
PrintfStack(&s);
return 0;
}