版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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湖南娄底冷水江市事业单位公开引进高层次和急需紧缺人才22人备考题库含答案详解(黄金题型)
- 2026年3月四川攀枝花市西区信访局招聘临时聘用人员1人备考题库附答案详解(巩固)
- 2026青海师范大学招聘博士备考题库(第一批)及答案详解(各地真题)
- 2025-2026学年藏戏教学设计师简历
- 2025-2026学年认识圆人教版教案
- 2024-2025学年9.2 项脊轩志一等奖教学设计
- 2025-2026学年国画菊花画法教案
- 第12课 中华传统养生术教学设计初中体育与健康冀教版2024七年级全一册-冀教版2024
- 2026年矫形用海绵内衬材料舒适性与耐用性分析
- 1 体验“热带风情”-东南亚教学设计初中地理晋教版2024七年级下册-晋教版2024
- 2026四川乐山师科投资有限责任公司招聘2人笔试备考试题及答案解析
- 2026广东东莞市塘厦镇招聘专职网格员7人考试备考题库及答案解析
- 2025-2026学年体育大单元教学设计武术
- 呼吸科终末期患者管理
- 天津市2024天津港引航中心招聘事业单位人员5人笔试历年参考题库典型考点附带答案详解
- 养鸡场安全生产责任制度范本
- 新版部编版三年级下册道德与法治第2课《幸福生活是奋斗出来的》教学课件
- Picco在休克患者治疗中的应用
- 金矿选矿项目经济效益和社会效益分析报告
- 三年级两位数乘加乘减计算练习题(每日一练共18份)
- 美容院消毒卫生隔离制度
评论
0/150
提交评论