数据结构(C语言描述) -斯庆巴拉 第3章栈和队列.pptVIP

数据结构(C语言描述) -斯庆巴拉 第3章栈和队列.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第3章 栈和队列 学习重点: 栈和队列的概念及特点 栈的顺序存储和链式存储及在不同存储结构上操作的实现算法 队列的顺序存储和链式存储及在不同存储结构上操作的实现算法 第3章 栈和队列 3.1 实例:药店药品柜的管理 3.2 逻辑结构及特征 3.3 栈的存储结构 3.4 队列的存储结构 3.5 应用举例 3.1 实例:药店药品柜的管理 3.1.1 问题描述 在药店管理过程中,当购进一批药品时,需要按类别将药品放入不同的药品柜中。而在销售药品时,则应该按照药品生产日期先后顺序进行销售。 3.1.2 问题的分析 存放药品时,放入药柜的同一类药品总是从底层开始摆放,在取药时,总是从最上一层开始拿,也就是说药品的摆放顺序和药品取出顺序是相反的。不论是放入药柜的药品,还是销售出的药品,它们都存在着时间上的先后的关系,是一种一一对应的关系,若把放入药柜的药品和销售出的药品看作是两个线性表A1和A2,则A1这种线性表称之为栈,A2这种线性表称为队列。 3.2 逻辑结构及特征 3.2.1 栈的基本概念 3.2.2 队列的基本概念 3.2.1 栈的基本概念 栈(Stack)是仅允许在表的一端进行插入或删除操作的线性表。允许进行插入和删除的一端称为栈顶,另一端称为栈底。栈顶的第一个元素被称为栈顶元素。不含任何数据元素的栈称为空栈。在栈顶进行插入运算,被称为入栈或进栈,在栈顶进行删除运算,被称为出栈或退栈。根据栈进行插入和删除操作的特点,栈又称为后进先出表。 3.2.2 队列的基本概念 队列(Queue)简称队,插入限定在表的一端进行,删除限定在表的另一端进行。允许插入的一端叫做队尾(rear),允许删除的一端称为队头或队首(front)。向队列中插入新元素称为进队或入队;从队列中删除元素称为出队或离队。根据插入和删除操作的特点,又称为先进先出线性表。 3.3 栈的存储结构 3.3.1 栈的顺序存储 3.3.2 栈的链式存储 3.3.1 栈的顺序存储 顺序存储实现:用一个一维数组存放栈元素,栈底为数组下标小的那端,又用一个变量指示栈顶位置(栈顶指针)。 栈顺序存储数据类型定义: struct Stack { Elemtype stack[StackMaxSize]; //StackMaxSize确定栈的最大深度 int top ; //栈顶指针(取值范围为0~StackMaxSize﹣1)}; 注意:top=﹣1表示栈空; top= StackMaxSize﹣1表示栈满。 顺序栈的各种基本操作的实现: 操作一:Initstack(S)初始化。 操作二:Clearstack(S) 清空栈 操作三:Push(S,elem) 进栈 操作四:Pop(S) 出栈 操作五:Gettop(S) 读取栈顶元素 操作六:Empty(S) 判断是否为空栈 3.3.2 栈的链式存储 栈的链式存储通常用单链表实现,此时链表的头指针为栈顶指针,定义为top,链表第一个结点为栈顶结点。当头指针为NULL时,表示当前栈为空栈。 链栈示意图: 链栈的各种基本操作的实现: 操作一:Initstack(S)初始化。 操作二:Clearstack(S) 清空栈 操作三:Push(S,elem) 进栈 操作四:Pop(S) 出栈 操作五:Gettop(S) 读取栈顶元素 操作六:Empty(S) 判断是否为空栈 3.4 队列的存储结构 3.4.1 队列的顺序存储 3.4.2 队列的链式存储 3.4.1 队列的顺序存储 顺序存储实现:顺序队由一个一维数组及两个分别指示队头和队尾的指针变量组成,这两个变量分别称为“队头指针”和“队尾指针”。 顺序存储类型定义为: struct Queue { ElemType queue[QueueMaxSize]; // QueueMaxSize表示队列的最大长度 int front,rear; }; 注意:当前队列的长度与数组所占用的单元数量无关,由队头指针和队尾指针决定,所以会出现“假溢出”现象 。 3.4.2 队列的链式存储 链队常用单链表来表示,队头指针front指向单链表的表头结点,队尾指针rear指向单链表的最后一个结点。链队的插入和删除操作,对应的是单链表的表尾插入和表头删除。 链队的类型定义如下: struct Linkqueue { Lnode *front; Lnode *rear; }; 3.5 应用举例

文档评论(0)

118压缩包课件库 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档