#include<stdio.h>
#include<malloc.h>
typedef struct node
{
int *pBase;
int len;//数组最大容纳长度
int top;//数组有效长度
}stack,*Stack;
void initStack(Stack,int);
void push(Stack,int);
void pop(Stack,int *);
bool stackEmpty(Stack);
bool stackFull(Stack);
void main()
{
stack stack;
initStack(&stack,6);
printf("开始压栈\n");
//压栈
push(&stack,2);
push(&stack,3);
push(&stack,4);
push(&stack,5);
//出栈
printf("开始出栈\n");
int val;
pop(&stack,&val);
pop(&stack,&val);
pop(&stack,&val);
pop(&stack,&val);
}
void initStack(Stack stack,int len)
{
stack->pBase=(int *)malloc(sizeof(int)*len);// 注意这地方初始化要分配内存。
stack->len=len;
stack->top=-1;//注意这地方坐标应当指明为-1
}
void push(Stack stack,int val)
{
if(stackFull(stack))
{
printf("栈已经满了,无法压栈");
return;
}
stack->top++;
stack->pBase[stack->top]=val;
}
bool stackFull(Stack stack)
{
if(stack->len-1==stack->top)
return true;
else
return false;
}
void pop(Stack stack,int *val)
{
if(stackEmpty(stack))
{
printf("当前栈已经为空,无法出栈");
return;
}
*val=stack->pBase[stack->top];
printf("%d ",*val);
stack->top--;
}
bool stackEmpty(Stack stack)
{
if(stack->top==-1)
return true;
else
return false;
}