版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第3章堆栈和队列,3.1堆栈,3.1.1堆栈1的概念。什么是堆栈?堆栈是一个线性表,只能在表的末尾插入和删除。(a1,a2,ai -1,ai,ai 1,an),插入和删除。可以插入和删除的末端称为堆栈顶部。插入操作称为推栈,删除操作称为推栈。栈入和栈出操作只能在栈顶执行。3.1堆叠,堆叠的特征是后进先出,堆叠底部的第一个堆叠元素,堆叠顶部的第一个堆叠元素,堆叠底部的最后一个堆叠元素,3.1堆叠,2。堆栈的基本操作1)初始化操作初始化堆栈(/堆栈空间基地址元素类型*顶部;/堆栈顶部指针int stacksize/当前分配的堆栈空间大小SqStack,3.1堆栈,3.1.2堆栈顺序存储和实现,顺序
2、堆栈图,S.stacksize S.top S.base,100,同意顶部指针指向顶部元素的下一个位置,3.1堆栈,3.1.2堆栈顺序存储和实现,顶部,底部,空堆栈,B C D .空堆栈顶部=基础堆栈满顶部-底部=stacksize(无分配空间),3.1堆栈,不可扩展堆栈操作,堆栈空,堆栈顶部指针顶部,指向实际堆栈后面的空位置推入堆栈,a,堆栈满,B,C,D,E,将数组大小设置为M top=M,堆栈满,此时进入Top=base,堆栈为空,当堆栈弹出时,它下溢并弹出。3.1堆栈可以扩展。堆栈顶部指针指向实际堆栈顶部后面的下一个位置,初始值top=base,推入堆栈,A,弹出,当前堆栈空间不足,需
3、要扩展,b .如果top=Stacksize,堆栈已满,需要扩展堆栈空间,扩展STACK _ INDENTATION;每次。如果没有可用的存储空间,则溢出。堆栈为空,如果top=base,则堆栈为空,然后下溢),base,堆栈为空,top,3.1堆栈,2。顺序堆栈的基本操作算法1)初始化操作初始化堆栈(SqStack Push (OPTR,#);初始堆栈(OPND);c=getchar();而(c!=# | GetTop(OPTR)!=# ) if(!在(c,OP)中/在(c,OP)中判断c是否是操作符推送(OPND,c);c=getchar();/stack else如果不是运算符,3.2堆
4、栈应用示例,switch(preference(gettop(OPTR),c)/确定OPTR的顶级运算符1和读入运算符2之间的优先级关系(case 3360/新输入的运算符c优先级较低,即顶级运算符优先级较高/将运算结果堆栈到OPND Pop (OPTR,theta) Pop (OPND,b)中;流行音乐(OPND,a);推动(OPND,操作(a,b);/执行二进制运算a b中断;/返回GetTop(OPND)时切换/;/EvaluateExpression,3.2堆栈应用示例,递归是一个非常有用的工具,它被用在很多领域,比如数学和编程。递归定义:简单地说,一个自己定义自己的概念叫做递归定义。
5、任何递归程序都可以用非递归程序来实现。3.3堆栈和递归,3.4.1队列1的概念。什么是队列?队列是一个线性表,只能在页眉处删除,在页脚处插入。(a1,a2,ai -1,ai,ai 1,an,insert,delete,可插入的末端称为队列尾部,可删除的末端称为队列头部。插入操作称为入队,删除操作称为出列。3.4队列、a1a23an、队列头、队列尾、队列出口、队列特征先入先出,首端第一个入队元素和尾端最后一个入队元素是头元素,最后一个入队元素是尾元素、3.4队列、2。队列1/队长指针的基本操作,指向后方的队长元素;/行尾指针,指向行尾元素的下一个位置SqQueue团队领导和团队尾指针由整数实现,
6、3.4队列,(a)空队列,(b)J1、J2和JBOY3乐队相继加入队列,(c)J1和J2相继离开团队,(d)J4、J5和J6相继加入团队,JBOY3乐队离开团队,q .前端和q .后端都是整数,用箭头表示只是为了直观。尾部指向队列末尾元素的下一个位置;前面指向团队领导元素。初始值为前=后=0,队列条件为:前=后;队列:q .基地后方=e;后方;排队外:e=Q .基地前沿;正面;Q.base、3.4队列、有问题。如果数组大小为M,那么:当前端=0,后端=M时,当前端0,后端=M时发生溢出,当重新排队时发生溢出。错误的溢出解决方案队列的第一个元素是固定的,剩余的元素在每个队列之后下移,这浪费了时间
7、。循环队列的基本思想是:后方,j4,j5,j6入队,J4,J5,J6,前方,3.4队列,实现:通过“模”运算入队:后部=(后部1)% M;团队外:e=Q基地前沿;前=(前1)% M;判断一个团队是满还是空的标准是什么?J7,J9,J8,团队空:前=后,解决方案:1。设置另一个标志,以区分空队和满队;2.少用一个元素空间:组空:前=后满:(后1)% M=前,满:前=后,3.4少用一个元素空间:队列空:前=后队列满:(后1)% M=前,队列空:前=后,J7,J8,1)初始化操作init queue _ sq(sqqueue/init queue _ sq,2)。循环队列的基本运算算法,3.4队列,QNode,* QueuePtr,3.4 queue,typedef struct /链队列的头节点的类型定义了QueuePtr front/队列头指针,指向链表尾部的队列头节点;/团队尾部指针,指向团队尾部节点链接队列;前端指向头节点,后端指向队列的末端,3.4
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026福建漳州市诏安县融媒体中心招募见习人员2人备考题库附答案详解(综合题)
- 2026福建泉州丰泽区城东街道社区卫生服务中心编外工作人员招聘备考题库含答案详解(b卷)
- 2026年天津市蓟州区面向甘肃省天祝县对口招聘工作人员备考题库及完整答案详解一套
- 2026安徽淮北师范大学招聘高层次人才66人备考题库附答案详解(研优卷)
- 2026中国科大地球和空间科学学院劳务派遣岗位招聘1人备考题库及答案详解(易错题)
- 2026中国能建中电工程东北院春季校园招聘备考题库及答案详解(真题汇编)
- 2026湖南益阳桃江县选调事业单位工作人员19人备考题库含答案详解(黄金题型)
- 五年级数学方程教学与练习方案
- 2026四川内江市市中区牌楼街道办事处招聘残疾人专职委员(专干)1人备考题库参考答案详解
- 2026重庆渝开发物业管理有限公司招聘7人备考题库及答案详解(各地真题)
- 星火英语四级词汇
- 三角形的认识(强震球)
- GB 1886.358-2022食品安全国家标准食品添加剂磷脂
- GB/T 23901.5-2009无损检测射线照相底片像质第5部分:双线型像质计图像不清晰度的测定
- GA/T 832-2014道路交通安全违法行为图像取证技术规范
- 刑事诉讼法(第三版)第十章
- 新版历年司法考试《刑法》考试真题题库(完整版)
- 一级半压气机优化教程
- 2022年楚雄彝族自治州姚安县医院医护人员招聘考试笔试题库及答案解析
- 2021新苏教版四年级下册科学练习题(一课一练)附全册教案
- 基于PLC自动配料系统
评论
0/150
提交评论