- 栈
栈是一种特殊的线性表,对于这种线性表规定他的插入运算和删除运算均在线性表的同一端进行,进行插入和删除的那一端称为栈顶,另一端称为栈底。栈的插入操作也分别简称进栈和出栈。
如果栈中由n个结点{k1,k2,…kn},称k1为栈底,kn为栈顶。
栈具有后进先出或先进后出(FILO)的性质。
- 顺序栈
一般的,可以设置一个足够大的移位数组存储栈,数组中下标为0元素的就是栈底,对于栈顶,可以设一个指针top指示它。
栈的顺序存储结构
#define MAXSIZE 100
typedef int datatype;
typedef struct{
datatype a[MAXSIZE];
int top;
}
sequce_stack;
sequce_stack st;
- 栈的初始化
viod init(sequce_stack *st)
{
st->top=0;
}
- 判断栈是否为空
int empty(aequce_stack st)
{
ruturn(st.top?0:1);
}
- 取栈顶结点值
datatype read(sequence_stack st)
{
if(empty(st))
{
printf("栈是空的!\n")
exit(1);
}
else
return st.a[st.top-1];
}
- 进栈操作

int push(sequence_stack *st,datatype)
{
if(st->top==MAXSIZE)
{
return 0;
}
st->a[st->top]=x;
st->top++;
return 1;
}
- 出栈操作

int pop(sequence_stack *st)
{
if(st->top==0)
{
return 0;
}
st->top--;
return 1;
}
来源:CSDN
作者:qq_44189457
链接:https://blog.csdn.net/qq_44189457/article/details/104619112



