春风十里一枝花的小孱弱弱又来了,至此线性表的内容就结束了,这一篇文章我们讨论特殊的表——栈,这里的栈可不是我们学习内存管理中的堆区栈区那个栈,这里的栈是一种数据结构,向仔细了解,请继续往下阅读吧。
不知道大家有没有玩过羽毛球,装羽毛球的筒子,我们先放进取的羽毛球在筒子的最底下,我们随后一个放进去的在最上面,羽毛球全放进去了怎么往外拿呀,阵势明知故问哈哈哈,一个一个往外拿呗,此时不知道大家有没有发现,我们后放进去的是最先拿出来的,子一个放进去的,是最后一个拿出来的。这就是数据结构-栈的定义。
栈是仅在表尾进行删除和插入操作的特殊线性表。简称LIFO。
我们把允许插入的一端叫做栈顶top,另一端就做栈底。
栈的插入操作成为入栈或者压栈。
栈的删除操作成为出栈或者弹栈。
先说一下顺序栈,其实和顺序表极其类似,只不过插入和删除规定只能在表尾。
至于是链式栈,依然是一个节点指向一个节点,具体请去看表的单链表操作:
点击跳转单链表详解
我们先看代码,来人,上代码:
//顺序栈定义
typedef struct
{
int data[MAXN];
int top;
}SqStack;
//增
int Push(SqStack *S,int e)
{
if(S->top==MAXN-1)
return false;
S->top++;
S->data[S->top]=e;
return true;
}
//删
int Pop(SqStack *S,int *e)
{