栈的定义:
进栈操作:
两栈共享空间:
对于两栈共享空间的push方法,需要有一个判断栈1还是栈2的参数stackNumber。
pop同理:
栈是限定仅在表位进行插入和删除操作的线性表。允许插入和删除的一端称为栈顶,另一端为栈底,不含任何数据元素的栈称为空栈。
栈的插入操作,叫做进栈,也叫做压栈,入栈,打个比方,像子弹如弹夹;栈的删除操作,叫做出栈,有的叫做弹栈,如同子弹出弹夹。示意图如下:
栈的顺序存储结构及实现:
进栈操作:
两栈共享空间:
因为栈的大小是事先确定的,万一不够用,就需要扩展栈的容量,我们可以将两个相同类型的栈共用。做法如下图:
关键思路:
他们是在数组的两端,向中间靠拢,top1和top2是两个栈的栈顶指针,只要这两个不见面,两个栈就能使用。栈1空是,top1==-1,top2==n时,栈2为空。
栈满的情况:
若栈2空,top1 == n - 1,栈1满;栈1空,top2==0,栈2满;更多的情况是top1+1 == top2为栈满。
代码如下:
对于两栈共享空间的push方法,需要有一个判断栈1还是栈2的参数stackNumber。
push代码:
pop同理:
对于链栈来说,不存在栈满的情况;但是对于空栈来说,链栈的头指针指向空,即top==NULL时。链栈的结构代码如下:
上图是进栈示意图,下面是代码演示:
代码: