- 1、本文档共117页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
chap3堆栈与队列
第三章 栈和队列 四类基本结构: 栈与队列的逻辑特征: 1. 基本概念 1. 基本概念 栈的抽象数据类型定义 1. 顺序栈 2. 顺序栈的基本操作: 3. 顺序栈的基本操作——初始化函数 3. 顺序栈的基本操作——判断栈是否为空 3. 顺序栈的基本操作——判断栈是否为满 3. 顺序栈的基本操作——入栈 3. 顺序栈的基本操作——出栈 3. 顺序栈的基本操作——取栈顶元素 4. 顺序栈的基本操作特点 5. 顺序栈的描述方式2 5. 顺序栈的描述方式3 6. 顺序栈上溢的解决方法 7. 双端栈 7. 双端栈 7. 双端栈的基本操作: 7. 双端栈的基本操作——初始化函数 7. 双端栈的基本操作——入栈函数 7. 双端栈的基本操作——出栈函数 8.链栈的基本概念 8.链栈的特点 9. 链栈的描述: 10. 链栈的基本操作——入栈 10. 链栈的基本操作——入栈 10. 链栈的基本操作——出栈 11.链栈的基本操作特点 12. 多栈的描述: 12. 多链栈:将多个链栈的栈顶指针存放在 一个一维指针数组中统一管理 12. 多栈的基本操作——初始化 12. 多栈的基本操作——入栈 12. 多栈的基本操作——出栈 括号匹配算法 问题分析: C编译系统对递归函数的自调用次数没有限制 2. 递归应用示例: 递归算法的两要素: 问题分解:将问题分解为相同性质且规模更小的问题。 递归结束条件:必须给出递归的结束条件,否则递归会无限循环下去。 练习:数组元素的查找(折半查找) 练习:数组元素的查找(折半查找) 设计递归算法的方法 递归应用示例——汉诺(hanoi)问题 若将n个盘片按规定从A塔移至C塔: 把A塔上的n-1个盘片借助C塔移至B塔 把第n个盘片从A塔移至C塔 把B塔上的n-1个盘片借助A塔移至C塔 算法用函数hanoi(n,x,y,z)以递归算法实现 1. 基本概念 1. 基本概念 队列的抽象数据类型定义 1. 链队列 2. 链队列的描述: 2. 链队列的描述: 3. 链队列的基本操作——初始化 3. 链队列的基本操作 3. 链队列的基本操作——入队 3. 链队列的基本操作——出队 4. 循环队列——顺序映射 4. 循环队列——顺序映射 4. 循环队列——顺序映射 4. 循环队列——顺序映射 5. 循环队列的基本操作: 5. 循环队列的基本操作——初始化 5. 循环队列的基本操作——判空 5. 循环队列的基本操作——判满 5. 循环队列的基本操作——入队列 5. 循环队列的基本操作——出队列 5. 循环队列的基本操作——取队头元素 5. 循环队列的基本操作——求长度 5. 循环队列的基本操作特点 0 1 2 3 4 rear front rear A B C rear rear rear rear 队空条件: 队满条件: rear = front rear = front D E 如何区分队空与队满呢? rear front rear rear 0 4 0 1 2 3 4 rear A B C D 循环队列的队空和队满判断问题解决方案一 rear 队空条件: 队满条件: rear = front (rear +1) % maxsize = front #define MAXSIZE 初始分配量 typedef struct { ElemType elem[MAXSIZE]; int front; int rear; }SeqQueue; (最简单、最常用) //头指针,指向队头元素 //尾指针,指向队尾元素的 下一个位置 ①循环队列的初始化 ②循环队列的判断队列是否为空 ③循环队列的判断队列是否为满 ④循环队列的入队 ⑤循环队列的出队 ⑥循环队列的取队头元素 ⑦循环队列的求长度 void InitQueue(SqQueue *Q) { Q-front=0; Q-rear=0; } rear front 0 4 0 1 2 3 4 int IsEmpty(SqQueue *Q) { if(Q-front==Q-rear) return TRUE; return FALSE; } int IsFull(SqQueue *Q) { if((Q-rear+1)%MAXSIZE==Q-front) return TRUE; return FALSE; } rear rear front rear rear 0 4 0 1 2 3 4 rear A B C D int EnQueue(SqQueue *Q,ElemType x) { if((Q-rear+1)%MAXSIZE==Q-front
您可能关注的文档
最近下载
- 2024年中级社工法规四色讲义-完整版全189页 .pdf VIP
- 17K408:散热器选用与管道安装.docx VIP
- 2025年湖北省武汉市高考物理四调试卷+答案解析(附后) .pdf VIP
- 合信 COTRUST科创思CTSC-200系列用户手册V1.40.pdf
- 2012湖南公务员考试-公共基础知识.doc VIP
- 二年级语文教师家长会专用.ppt
- 杭州名鑫双氧水有限公司每年10万吨(折27.5%)过氧化氢技术改造项目可行性研究报告.doc
- DB14Z 1-2025 高速公路智慧服务区建设指南.docx
- [城市轨道交通地下段列车运行引起的住宅室内振动与结构噪声限值及测量方法上海市.doc VIP
- SR变更管理程序+变更全套表单 OK.doc
文档评论(0)