数据结构——第三章 栈与队列(5)
创始人
2024-05-28 22:15:38
0

共用栈和双队列

  • 1.共用栈
  • 2.双端队列
  • 栈与队列的本章小节

1.共用栈

在实际应用中,有时一个应用程序需要多个栈,但这些栈的数据元素类型相同。假设每个栈都采用顺序栈,由于每个栈的使用情况不尽相同,势必会造成存储空间的浪费。若让多个栈共用一个足够大的连续存储空间,则可利用的动态特性使它们的存储空间互补。这时的操作必须同时记住多个栈的栈顶。

为使操作更加方便,可采用多个单链表,将它们的栈顶存放到一个指针数组中。
顺序栈的共享最常见的两栈的共享。假设两个栈共享一维数组s[MAXNUM],其中一个栈的栈顶用topl指示,另一个栈的栈顶用top2指示。

共享栈的数据类型描述如下:

typedef int SElemType;
typedef struct ShareStack
{SElemType data[MAXNUM];int top1, top2;int stackSize;
}ShareStack;

栈空:栈1空,top1==-1为真;栈2空,top2MAXNUM为真。
栈满:top1+1
top2为真。
进栈操作:必须区分是对哪一个栈进操作。

int EnShareStack(ShareStack* S, SElemType x, int stacknum)
{if (S->top1 + 1 == S->top2)return 0;if (stacknum == 1)S->data[++S->top1] = x;else if (stacknum == 2)S->data[++S->top2] = x;else return 0;return 1;
}

出栈操作:必须区分是对哪一个栈进行操作。

int DeShareStack(ShareStack* S, SElemType* x, int stacknum)
{if (stacknum == 1){if (S->top1 == -1)return 0;else *x = S->data[S->top1--];}else if (stacknum == 2){if (S->top1 == S->stackSize)return 0;else *x = S->data[S->top2++];}else return 0;return 1;

2.双端队列

如果限定插入和删除操作均可以在线性表的两端进行,则称位双端队列。
这样的结构常用于计算机的CPU的调度,所谓“CPU调度”是指在多人使用一个CPU的情况下,由于CPU在同一时间只能执行一项任务,所以将每个人的工作任务事先存放在队列中,待CPU闲置时,再从队列中取出一项待执行的工作进行处理。双端队列的两端均可输出和输入,使CPU处理不同任务的请求更具灵活性。
双端队列与共用栈是不相同的。共用栈的每个栈都各自有一个栈顶都各自有一个栈顶指针,两个栈顶指针是向中间扩展;而两端队列可以看成是两个栈底连在一起的栈,在两个端点都分别设有队头和队尾两个指针,也可以对双端队列做出如下限制。
(1)只允许在一端进行插入,两端进行删除。
(2)只允许在一端进行删除,两端进行插入。

栈与队列的本章小节

栈和队列同属于线性表,但它们与第2章的线性表数不同。一般线性的插入和删除操作,只要位置合理,都可以进行操作。栈的插入与删除操作只能在一端进行;队列的插入与删除操作分别在两端进行。因此常常称栈与队列是插入与删除受限的线性表。
栈的常用存储空间结构有顺序栈和链栈。顺序栈除了要考虑一片连续的存储空间用于存放栈中元素之外,还必须考虑指示栈顶的位置和总容量,所以常用的顺序栈和顺序表一样有两种不同的定义方法。由于进栈和出栈操作只能在栈顶进行,因此链表通常不是带头结点的单向链表。
队列的常用存储结构有循环队列和队列。循环队列一定要哦保证一片连续存储空间的循环使用,因此循环队列的类型考虑给定的数据成员能否正确表达队头、队尾的位置以及队空、队满的条件和队列元素个数的计算。本章给出了循环队列的两种描述方法,特别需要注意的是;在第一种循环队列的定义中,队头指针指向队头,队尾指针指向队尾的下一个元素;在第2种循环队列的定义中,只有队尾指针,队头指针并不在类型中,而是计算出来的。
链队列的重点在于队头指针和队尾指针的确定。本章给出了两种链队列的类型定义:一种是单链表实现,将队头指针和队尾指针组成一个结构体类型,让队头指针指向头结点,队尾指针指向队尾;另一种是循环链表实现,只用一个队尾指针指向尾结点,让尾结点的指针域指向头结点。

相关内容

热门资讯

安徽新一批招聘公告来了!附岗位... 近期安徽新一批招聘公告出炉有适合你的岗位吗?一起来看看吧↓↓↓北京师范大学淮南实验学校教师招聘启事招...
21日可赏火星东方照 来源:新华网新华社记者 王珏玢 朱筱21日9时34分将迎来火星东方照。当天傍晚,火星位于天空正南方。...
这届剑网3玩家,在WPS里「作... 在大部分打工人眼里,WPS是办公标配,写PPT、做表格、赶周报的必需。但最近有些不同。4月14日开始...
观众称看机器人跑马像看科幻片 转自:河南商报 #跑马人形机器人参赛团队发声#【#观众称...
18年,30万人青春接力!湖南... 今天,中国建设银行湖南省分行·2025湖南(春季)百公里出征,近万名毅行者共迎风雨,集体挑战徒步穿越...
宇树科技回应机器人马拉松摔倒:... 4月19日,首届人形机器人半程马拉松在北京开跑。多个网传视频显示,宇树科技G1人形机器人在跑步过程中...
4万股民慌了!居然智家董事长突... 正在正常经营中的居然之家。 李凯旋/摄本报记者   李凯旋   北京报道如果不是因为这件事,那投资者...
“使命就是科研报国!”庞众望“... 转自:新京报评论从“庞众望”们身上可以看到,我们的国与家的未来,都充满希望。▲庞众望在清华大学“科学...
江苏人爱读书!去年全省居民综合... 转自:微讯江苏爱读书、读好书、善读书,阅读始终是江苏大地上一道美丽的风景。4月19日,2025年江苏...
海口2025年一季度汽车“置换... 南海网4月19日消息(记者 张野)记者从海口市商务局获悉,海口将于4月20日正式开放2025年一季度...
学生入读高校三年无学籍无毕业证... 转自:北京新闻广播 【#学生入读高校三年无学籍无毕业证#...
AI赋能,新能源汽车产业在“智... 来源:新华社新华社记者 唐诗凝 高亢 于也童站在去年产销均超过1200万辆的新台阶上,有人会问,中国...
全球首个机器人马拉松!天工Ul... 当波士顿动力机器人还在表演后空翻时,中国科技圈已悄然开启新纪元——4月19日,全球首次“人机共跑”半...
白宫将设工作组紧急处理对中国加... 当地时间4月18日,美国哥伦比亚广播公司报道称,多名消息人士透露,由于特朗普政府对中国商品加征的畸高...
河北自贸试验区“牵手”海南自贸... 河北自贸试验区“牵手”海南自贸港签署全面深化合作框架协议,明确10项合作内容河北港口集团曹妃甸矿石码...
马斯克突然“低调”了 报道称,马斯克在关键政策上的影响力显示出局限性,其在在内阁会议上的表现明显低调、在X平台上的活跃度也...
周五不加班,加个微信吧! 转自:新和成周五的夜晚 我们不谈工作,谈谈感情  4月18日晚,当城市渐渐亮起灯火,新昌风铃小院开启...
东城打造170余条“安心通学路... 新京报讯 据“北京东城”微信公众号消息,近日,北京市“安心通学路”建设工作现场会在东城区灯市口小学召...
反对美对华物流、海事和造船领域... 4月19日,中国物流与采购联合会在官网发布《关于反对美对华物流、海事和造船领域301调查措施的声明》...
一夜连震47次!日本“可能发生... 当地时间18日20时18分,日本长野县发生5.1级地震,多地震感强烈。随后当地连续发生47次地震,居...