网站大量收购独家精品文档,联系QQ:2885784924

第04章节 栈和队列(C++).ppt

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第04章节栈和队列(C)

叶核亚 数据结构(C++版)(第2版) 第1章 绪论 第2章 线性表 第3章 串 第4章 栈与队列 第5章 数组和广义表 第6章 树和二叉树 第7章 图 第8章 查找 第9章 排序 第10章 综合应用设计 第11章 Visual C++集成开发环境 第4章 栈和队列 4.1 栈 4.2 队列 4.3 优先队列 4.4 递归 目的:使用栈或队列求解应用问题。 要求:掌握栈和队列抽象数据类型,以及顺 序和链式存储结构实现;理解对于怎 样的应用问题,需要使用栈或队列, 以及怎样使用。 重点:栈和队列的设计和应用。 难点:栈或队列的使用场合,以及如何使用 栈和队列求解应用问题。 4.1 栈 4.1.1 栈抽象数据类型 4.1.2 顺序栈 4.1.3 链式栈 4.1.4 栈的应用 4.1.1 栈抽象数据类型 栈(stack)是一种特殊的线性表, 其插入和删除操作只允许在线性表的一端进行。 ADT Stack //栈抽象数据类型 { bool isEmpty(); //判断是否空栈 void push(T x); //元素x入栈 T pop(); //出栈 T get(); //取栈顶元素 } 4.1.2 顺序栈 template class T class SeqStack //顺序栈类 { private: T *element; //动态数组存储栈的数据元素 int size; //栈的数组容量 int top; //栈顶元素下标 } 4.1.3 链式栈 template class T class LinkedStack { private: NodeT *top; } 4.1.4 栈的应用 栈是嵌套调用机制的实现基础 使用栈以非递归方式实现递归算法 例4.1 判断表达式中圆括号是否匹配 例4.2 使用栈计算表达式的值。 中缀表达式1+2*(3-4)+5 1.将中缀表达式转换为后缀表达式 2.后缀表达式求值 4.2 队列 4.2.1 队列抽象数据类型 4.2.2 顺序队列 4.2.3 链式队列 4.2.4 队列的应用 4.2.1 队列抽象数据类型 队列(queue)是一种特殊的线性表,其插入和删除操作分别在线性表的两端进行。 ADT Queue //队列抽象数据类型 { bool isEmpty(); //判断队列是否为空 void enqueue(T x); //元素x入队 T dequeue(); //出队 } 4.2.2 顺序队列 顺序队列,假溢出 2.顺序循环队列 front=(front+1) % size; rear=(rear+1) % size; 3.顺序循环队列类 template class T class SeqQueue //顺序循环队列类 { private: T *element; //动态数组存储队列的数据元素 int size; //队列的数组容量 int front, rear; //队列首尾下标 } 4.2.3 链式队列 template class T class LinkedQueue //链式队列类 { private: NodeT *front, *rear; } 4.2.4 队列的应用 例4.3 求解素数环问题。 4.3 优先队列 优先队列及其存储结构 优先队列类 template class T class PriorityQueue //优先队列类 { //元素按优先级升序排列 private:

文档评论(0)

qiwqpu54 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档