顺序栈
- 只允许在一端插入和删除的线性表
- 允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom)
- 特点:后进先出(LIFO)
//定义顺序栈的结构体
typedef struct _stack
{
Data data[SIZE]; //栈数组
int top; //栈顶指针
}Stack;


栈的主要操作
- void Push(Stack *s, Data data); //进栈
- BOOL Full(Stack *s); //判断栈是否满
- BOOL Empty(Stack *s); //判断栈是否空
- void Pop(Stack *s); //出栈
- BOOL GetTop(Stack *s, Data *data); //取栈顶
- void Init(Stack *s)//置空栈
顺序栈的初始化
void Init(Stack *s)
{
if (NULL == s)
return;
s->top = -1; //初始化栈顶为-1
}
顺序栈的入栈
void Push(Stack *s, Data data)
{
if (NULL == s)
return;
if (TRUE == Full(s)) //如果满栈不执行入栈
return;
s->data[++s->top] = data; //->的优先级大于++
}
顺序栈的出栈
void Pop(Stack *s)
{
if (NULL == s)
return;
if (TRUE == Empty(s))
return;
s->top--;
}
顺序栈的取栈顶
Data GetTop(Stack *s)
{
if (NULL == s)
return;
return s->data[s->top];
}