4、多栈共享问题 ■如何充分利用栈空间,这是解决存储空间紧张 这样一个实际矛盾所要考虑的问题 作为一种策略,就是多栈共享一个栈空间。具 体作法是: ■对两栈共享情况来说,将两个栈底分别设 两娉两栈而共针topl和top2相对中 个機機间的分界线是 ↑to与的top2= MAXSIZE↑ a 栈1、栈2均有若干元素 top top2 栈满的情况 op top2 2021年2月24日 16
2021年2月24日 16 4、多栈共享问题 ◼ 如何充分利用栈空间,这是解决存储空间紧张 这样一个实际矛盾所要考虑的问题。 ◼ 作为一种策略,就是多栈共享一个栈空间。具 体作法是: ◼ 对两栈共享情况来说,将两个栈底分别设 在两端,两个栈顶指针top1和top2相对中 间位置动态移动,两个栈之间的分界线是 不定的。 a. b. c. top1 =0 top2=MAXSIZE 空栈 top1 top2 栈1、栈2均有若干元素 top1 top2 栈满的情况
5、栈的链式存储结构 ■由前面介绍的链表结构可知,链结 构操作灵活。对栈结构也是一样的。 ■顺序栈最多可用于2个栈的共享 对于更多的栈就难于表达了。 ■对于最大空间需要量事先不知的情 况,就不能使用顺序栈了。这时, 就需要采用链栈。 2021年2月24日
2021年2月24日 17 5、栈的链式存储结构 ◼ 由前面介绍的链表结构可知,链结 构操作灵活。对栈结构也是一样的。 ◼ 顺序栈最多可用于2个栈的共享, 对于更多的栈就难于表达了。 ◼ 对于最大空间需要量事先不知的情 况,就不能使用顺序栈了。这时, 就需要采用链栈
链栈存储结构 链栈存储结构的C语言描述: struct snode i int data; struct snode *link: }; typedef struct snode snode i n链栈为空的条件:top=NULL 链栈为满的条件:t=NULL(t为申请的 结点,为NUL表示失败.) 2021年2月24日
2021年2月24日 18 ◼ 链栈存储结构的C语言描述: struct snode { int data; struct snode *link; }; typedeef struct snode SNODE ; ◼ 链栈为空的条件: top = NULL ◼ 链栈为满的条件: t = NULL (t 为申请的 结点,为NULL表示失败.) 链栈存储结构
链栈示意图 top ai栈顶 a3 a a1栈底 2021年2月24日
2021年2月24日 19 链栈示意图 a1 a2 a3 ^ 栈底 top 栈顶 …... ai
算法1-10进栈操作 算法1-10操作步骤: stepl申请一个链栈结点,若 t=NUL2,则表示链满;否则,执行 stepz step2在top所指结点之前插入新 结点,并将top指向新申请的结点t。 2021年2月24日 20
2021年2月24日 20 算法1-10 进栈操作 算法1-10操作步骤: ◼ step1 申请一个链栈结点,若 t=NULL,则表示链满;否则,执行 step2 ; ◼ step2 在top所指结点之前插入新 结点,并将top指向新申请的结点t