- 1、本文档共73页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]第三章 堆栈和队列
第三章 堆栈和队列 Chapter 3 Stack and Queue 初始化 参数:S是指向结构变量的指针; 功能:建一个空栈S; void inistack(seqstack *s) { s-top=-1; } 判栈空操作 参数:S是存放结构体变量的数组; 功能:判断S是否为空,为空返回1,否则返回0; int empty(seqstack s) { if(s.top==-1) return 1; else return 0; } 入栈 功能:将数据元素x压入顺序堆栈S,入栈 成功返回1,否则返回0 int push(seqstack *s, DataType x) { if (s-top==maxlen-1) { printf(“\nStack is full”); return 0; } s-top++; s-stack[s-top]=x; return 1; } 出栈 功能:弹出顺序堆栈s的栈顶数据元素值到参数 d,出栈成功返回1,否则返回0 取栈顶元素 功能:取顺序堆栈s的当前栈顶数据元素值到 参数d,成功返回1,否则返回0 中缀表达式:A + ( B – C / D) × E 后缀表达式:ABCD/-E×+ 后缀表达式特点 1、与相应的中缀表达式中的操作数次序相同 2、没有括号 3.2 队列 三、队列的顺序存储结构 顺序队列的假溢出 循环队列的表示和实现 1. 基本原理: a.当rear和front达到maxlen-1后,再前进一个位置就自动到0。 b.如何实现: 用求模运算,rear=(rear+1)%maxlen void iniqueue(sequeue *sq) { sq-front=0; sq-rear=0; } int addqueue(sequeue *sq,DataType x) { if (sq-front==(sq-rear+1)%maxlen) { printf(“\nQueue is full”); return 0; } sq-queue[sq-rear]=x; sq-rear=(sq-rear+1)%maxlen; return 1; } int delqueue(sequeue *sq, DataType *d) { if (sq-front==sq-rear) { printf(\n Queue is empty!); return 0; } *d=sq-queue[sq-front]; sq-front=(sq-front+1)%maxlen; return 1; } 四、队列的链式存储结构 中缀表达式转换为后缀表达式的处理规则 1、如为操作数,直接输出到队列; 2、如当前运算符高于栈顶运算符,入栈; 3、如当前运算符低于栈顶运算符,栈顶运算符退栈,并输出到队列,当前运算符再与栈顶运算符比较; 4、如当前运算符等于栈顶运算符,且栈顶运算符为“(”,当前运算符为“)”,则栈顶运算符退栈,继续读下一符号; 5、如当前运算符等于栈顶运算符,且栈顶运算符为“#”,当前运算符也为“#”,则栈顶运算符退栈,表示运算结束; = # ) = ( / × - + # ) ( / × - + 当前运算符(a) 栈顶运算 符(b) 运算符优先级关系 ABCD # +(-/ )×E# 9 ABC # +(-/ D)×E# 8 ABC # +(- /D)×E# 7 AB # +(- C/D)×E# 6 AB # +( -C/D)×E# 5 A # +( B-C/D)×E# 4 A # + (B-C/D)×E# 3 A # +(B-C/D)×E# 2 # A+(B-C/D)×E# 1 输出 STACK 中缀表达式 步骤 ABCD/ -E × + # # 16 ABCD/ -E × # + # 15 ABCD/ -E # + × # 14 ABCD/ - # + × E# 13 ABCD/ - # + ×E# 12 ABCD/ - # +( )×E# 11 ABCD/ # +(- )×E# 10 输出 STACK 中缀表达式 步骤 后缀表达式的处理过程 T4 T4 ← A + T3 AT3+ T3 ← T2 × E AT2E×+ T2 ← B – T1 ABT1-E×+ T
您可能关注的文档
- [工学]第4章 机械设计 齿轮传动——重庆大学、西安交大课件.ppt
- [工学]第4章 无约束优化方法--v2.ppt
- [工学]第4章 电压测量方法.ppt
- [工学]第4章 算法及结构化程序设计.ppt
- [工学]第4章 电容式传感器-2西理工传感器原理及应用课件.ppt
- [工学]第4章+晶体三极管及其基本放大电路44~45.pdf
- [工学]第4章平面机构的力分析2.ppt
- [工学]第4章-酸碱滴定法.ppt
- [工学]第4章斩控调压电路.ppt
- [工学]第4章汇编语言程序设计-2010.ppt
- 包头市第四医院高层次人才引进笔试参考题库附答案解析.docx
- 2025年湖南湘潭韶山市公安局警务辅助人员招聘6人笔试模拟试题及答案解析.docx
- 2025年金华磐安县中医院招聘编外专业技术人才4人笔试备考试题及答案解析.docx
- 2025年呼和浩特铁路局集团招聘(406人)笔试模拟试题及答案解析.docx
- 2025重庆南岸区消防救援局消防文员招聘1人笔试参考题库附答案解析.docx
- 2025年河北邢台市公安局公开招聘警务辅助人员180名(第二批)笔试模拟试题及答案解析.docx
- 2025重庆字水中学公开招聘笔试参考题库附答案解析.docx
- 成都市光荣小学校 2025-2026学年度员额教师(附教辅人员)招聘(1人)笔试参考题库附答案解析.docx
- 2025年泉州市国投资产管理有限公司招聘1人笔试备考试题及答案解析.docx
- 2025重庆西区医院招聘4人笔试参考题库附答案解析.docx
文档评论(0)