数据结构C++版叶核亚主编第05章栈与队列课件教学.pptVIP

数据结构C++版叶核亚主编第05章栈与队列课件教学.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文档。上传文档
查看更多
数据结构C++版叶核亚主编第05章栈与队列课件教学.ppt

《数据结构(C++版)》 叶核亚 《数据结构(C++版)》 第1章 绪论 第2章 线性表 第3章 排序 第4章 串 第5章 栈与队列 第6章 数组和广义表 第7章 树和二叉树 第8章 查找 第9章 图 第10章 综合应用设计 第5章 栈与队列 栈和队列是两种特殊的线性表。 5.1 栈 5.2 队列 5.3 递归 5.1 栈 5.1.1 栈的定义 5.1.2 栈的抽象数据类型 5.1.3 顺序栈类 5.1.4 链式栈类 5.1.5 栈的应用 5.1.1 栈的定义 栈(stack)是一种特殊的线性表,其插入和删除操作只允许在线性表的一端进行。 允许操作一端称为栈顶(top),不允许操作的一端称为栈底(bottom)。 栈顶的当前位置是动态的,标识栈顶当前位置的变量称为栈顶指针。 栈中插入数据元素的过程称为入栈(push),删除数据元素的过程称为出栈(pop)。 当栈中没有数据元素时称之为空栈。 5.1.2 栈的抽象数据类型 栈的数据元素 栈的基本操作 栈的初始化,设置栈状态为空。 判断栈的状态是否为空。 判断栈的状态是否已满。 入栈:将数据元素插入栈中作为新的栈顶数据元素的过程。在入栈之前必须判断栈的状态是否已满,如果栈不满,则接收新数据元素入栈,否则产生上溢错误(overflow)。 出栈:取出当前栈顶数据元素,下一个数据元素成为新的栈顶数据元素的过程。在出栈之前,必须判断栈的状态是否为空。如果栈的状态为空,产生下溢错误(underflow)。 获得栈顶数据元素,此时该数据元素未出栈。 5.1.3 顺序栈类 5.1.4 链式栈类 链式栈的结点类 template class T class OnelinkNode2 //单链表结点类,模板 { public: T data; //数据元素域 OnelinkNode2T *next; //指针域,指向后继结点的指针 OnelinkNode2(T k,OnelinkNode2T *nextnode=NULL) { //构造结点 data=k; next=nextnode; } ~OnelinkNode2() //析构函数 {} }; 2. 链式栈类的设计与实现 链式栈的基本操作图 5.1.5 栈的应用 1.栈是嵌套调用机制的实现基础 2.实现深度遍历算法时使用栈 3.利用栈以非递归方式实现递归算法 例5.2 判断表达式中括号是否匹配 判断表达式中括号是否匹配的算法描述 例5.3 使用栈计算表达式的值 后缀表达式求值过程 将中缀表达式变为后缀表达式时运算符栈状态的变化情况 后缀表达式求值过程中数据栈状态的变化情况 5.2 队列 5.2.1 队列的定义 5.2.2 队列的抽象数据类型 5.2.3 队列的存储结构 5.2.4 顺序循环队列类 5.2.5 链式队列类 5.2.6 队列的应用 5.2.1 队列的定义 队列(queue)是一种特殊的线性表,其插入和删除操作分别在线性表的两端进行。 向队列中插入元素的过程称为入队(enqueue),删除元素的过程称为出队(dequeue)。 允许入队的一端为队尾(rear),允许出队的一端为队头(front)。标识队头和队尾当前位置的变量称为队头指针和队尾指针。 当队列中没有数据元素时称作空队列。 5.2.2 队列的抽象数据类型 1.队列的数据元素 2.队列的基本操作 队列的初始化,设置队列状态为空。 判断队列的状态是否为空。 判断队列的状态是否已满。 入队:将数据元素从队尾处加入队列的过程。在入队之前必须判断队列的状态是否已满,如果队列不满,则接收新数据元素入队,队列满时数据元素不能入队,产生上溢错误(overflow)。 出队:从队头处取出数据元素的过程。在出队之前,必须判断队列的状态是否为空。队列空时,取不到元素,产生下溢错误(underflow)。 5.2.3 队列的存储结构 1.队列的顺序存储结构 2.顺序循环队列 5.2.4 顺序循环队列类 例5.4 使用顺序循环队列的基本操作 5.2.5 链式队列类 链式队列的基本操作图 5.2.6 队列的应用 1.处理等待问题时系统设立队列 队列具有“先进先出”的特性,当需要按一定次序等待时,系统需设立一个队列。 2.实现广度遍历算法

您可能关注的文档

文档评论(0)

带头大哥 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档