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