#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define maxsize 1024
typedef int ElemType;
typedef struct
{
ElemType stack[maxsize]; //数组
int top; //当前元素位序
} seqstack;
//初始化栈
seqstack *InitStack(){
seqstack *temp;
temp=(seqstack *)malloc(sizeof(seqstack));
//判空
if (!temp)
{
printf("空间不足\n");
return NULL;
}
else{
temp->top=0;//位序
printf("初始化栈完成\n");
return temp;
}
}
//创建栈
void CreateStack(seqstack *p,ElemType n){
for (int i = 0; i < n; ++i)
{
p->stack[i]=i;
}
p->top = n;
printf("创建栈完成\n");
}
//取栈顶元素
ElemType getStack(seqstack *p){
printf("取栈完成\n");
printf("当前top:%d\n",p->top);
return p->stack[p->top-1];
}
//入栈
int inStack(seqstack *p,ElemType j){
if(p->top==maxsize) return 0;//栈满
p->stack[p->top]=j;
p->top++;
printf("入栈成功\n");
}
//出栈
ElemType outStack(seqstack *p){
if(p->top==0){
printf("空栈\n");
return 0;
}
p->top--;
printf("出栈成功\n");
return p->stack[p->top-1];
}
int main()
{
seqstack *p;
p=InitStack();//初始化栈
CreateStack(p,10);//创建栈
printf("%d\n",getStack(p));//取栈
inStack(p,99);//入栈
printf("%d\n",getStack(p));//取栈
printf("%d\n",outStack(p));//出栈
return 0;
}