NO.3数据结构栈和队列.pptVIP

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
堆栈操作 第一章 数据结构 1.3 栈和队列 1.3.1 栈 1.栈的定义 定义:只允许在线性表的一端进行插入和删除的线性表。 相关术语: (1)栈顶:允许插入与删除的一端称为栈顶。栈顶指针top初值指向栈底,插入新的栈顶元素时,top增1 ,栈顶指针始终指向栈顶元素的下一个位置。 (2)栈底:不允许插入与删除的一端称为栈底。栈底指针base始终指向栈底位置。 (3)入栈:栈的插入操作(往栈中插入一个元素) (4)出栈:栈的删除操作(从栈中删除一个元素) (5)栈空: top=base (6)栈满: top=m(m为栈最大容量) 栈示意图: 原则:先进后出或后进先出 栈顶元素总是最后入栈,而最先出栈的 栈底元素总是最先入栈,而最后出栈的 A 进 B A 进 C A 进 A 出 D A 进 A 出 出 初始 出栈元素顺序: B → C → D → A A 出 出 2.顺序栈及其运算 栈的两种存储结构 顺序存储结构:利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素 链式存储结构:也称可利用栈。用于收集计算机存储器中所有空闲存储空间。 顺序栈:顺序存储结构的栈称为顺序栈。 链栈:链式存储结构栈称为链栈。 基本运算:入栈、退栈与读栈顶元素 (1)入栈 步骤: 栈顶指针top加1 新元素插入到栈顶指针指向位置 (2)出栈 步骤: 栈顶元素赋给一个指定的变量 栈顶指针top减1 (3)读栈顶元素 概念:将栈顶元素赋给一个指定变量 注意:不删除栈顶元素,栈顶指针不会改变 注意: 栈顶指针指向存储空间最后一个位置时,栈已满,不能再入栈。称为栈“上溢”错误. 栈顶指针为0时,栈空,不能再退栈。称为栈“下溢”错误 举例 top base 空栈 top base A入栈 A top base BCDEF入栈 A B C D E F top base FEDC退栈 A B 1.3.2 队列 定义:指允许在一端插入,而在另一端进行删除的线性表。 相关术语(5个): (1)队尾:允许插入的一端称为队尾。Q.rear队尾指针,始终 指向队尾元素的下一个位置。 (2)队头:允许进行删除的一端称为队头。Q.front队头指针,始终指向队头元素。 (3)入队列:队列插入操作(进队列) (4)出队列:队列的删除操作(退队列) (5)空队列:队列中无数据元素 原则:先进先出 队头元素总是最先进队列的,也总是最先出队列 队尾元素总是最后进队列,也是最后出队列 队列结构示意图:队列Q=(a1,a2, …, an ) a1 ai a2 an … … 队头 队尾 退队 入队 1.链队列 定义:用链表表示的队列。P29 空队列时,头指针Q.front和尾指针Q.ear同时指向头结点 新元素入队时插在头结点之后,修改Q.rear指针 删除一个元素时,修改Q.front指针。删除唯一元素时Q.front与Q.rear回缩到头结点。 Q.front Q.rear 空队列 Q.front Q.rear 具有n个元素的队列 Q.front Q.rear a1 a2 an ^ a1入队列 Q.front Q.rear a1 ^ a2入队列 Q.front Q.rear a1 a2 ^ a1出队列 Q.front Q.rear a1 a2 ^ 2.顺序队列 定义:队列的顺序存储结构称为顺序队列,利用一组地址连续的存储单元依次存放队列中的数据元素。 约定:初始化队列令 Q.front=Q.rear=0 队尾插入新元素,Q.rear加1 队头元素出队列,Q.front加1 举例:顺序队列头尾指针变化情况 5 4 3 2 1 0 空队 rear front a1 a2 a3 5 4 3 2 1 0 front rear a3 5 4 3 2 1 0 front rear a3 a4 a5 a6 5 4 3 2 1 0 front rear 缺点:如上例, 队列最大存储空间为6,队满时再继续插入元素就会上溢。队尾指针已达到数组上界,不能在增大。而当前队列可用空间并未占满,“假满”现象。 3.循环队列 引入:为解决顺序队列“假满”而采取的方法。 定义:将队列存储空间的最后一个位置饶到第一个位置,相成逻辑上的环形空间。 判定条件: 队空:Q.rear=Q.front 队满: 方法1:Q.rear=Q.front,设一个标志变量S= 0 队空 1 队满 约定循环数组中元素个数达到N-1队满 头指针在尾指针下一位置上 方法2:少一个元素空间 满队列判定条件 (Q.rear+1)%MAXSIZE(存储空间长度)==Q

文档评论(0)

精华文档888 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档