- 1、本文档共36页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构讲义第3章-栈和队列
第三章 栈和队列 栈和队列是操作受限的线性表,在计算机科学和程序设计中有广泛的应用。 3.1栈 3.2栈的应用举例 3.3栈与递归 3.4队列 3.1.2栈的表示与实现 1.顺序栈 用向量表示栈,附设top指向栈顶位置。 3.1.2栈的表示与实现 ⑴ 置空栈:首先建立栈空间,然后初始化栈顶指针。 void initStack(SqStack s) { s.top= 0; } 3.1.2栈的表示与实现 ⑶ 入栈 int Push (SeqStack s, elemtype x) {if (s.top= =MAXSIZE-1) return 0; /*上溢*/ else {s.data[s.top]=x; s.top++; return 1; } } ⑷ 出栈 int Pop (SeqStack s, datatype x) { if (Empty_SeqStack ( s ) ) return 0; /*下溢 */ else {s.top--; x=s.data[s.top];return 1; } } 3.1.2栈的表示与实现 3.1.2 栈的表示与实现 2.链栈 3.1.2 栈的表示与实现 ⑴ 置空栈 void Init_LinkStack( LinkStack top ) { top= NULL; } ⑵ 判栈空 int Empty_LinkStack(LinkStack top ) { if(top==NULL) return 1; else return 0; } 3.1.2 栈的表示与实现 ⑶ 入栈 void Push(LinkStack top, ElemType x) { s=malloc(sizeof(StackNode)); s-data=x; s-next=top; top=s; } 3.2 栈的应用举例 1 数制转换 一个十进制N和其它进制数的转换的简单算法基于下列原理: N=(n div d)*d+n mod d ( 其中:div为整除运算,mod为求余运算) 例如 (1348)10=(2504)8,其运算过程如下: 3.2 栈的应用举例 2 括号匹配的检验 假设表达式中充许括号嵌套,则检验括号是否匹配的方法可用“期待的急迫程度”这个概念来描述。例: (()() (())) 4 表达式求值 表达式 由运算量、运算符以及其它定义符构成的,有完全确定意义的式子叫表达式 中缀表示法 在表示表达式时,把运算符写在两个运算量之间的方法叫中缀表示法。 如:A+B 后缀表示法 在表示表达式时,每一个运算符都紧跟在它所操作的运算量之后的方法叫后缀表示法。 如A+B的后缀表示法为:AB+ 3.3栈与递归 1 递归的概念 2 递归设计 3 栈与递归的执行过程 3.4 队列 3.4 队列 3.4 队列 3.4 队列 3.4 队列 3.4 队列 3.4.4、应用实例----停车场管理 rear front J1 J2 rear front J2 (a)空队列 (b)J1,J2相继入队列 (c)J1出队 (d)J3,J4和J5相继入队之后,J2出队 rear front -1 0 1 2 3 4 rear front J5 J4 J3 又有J6入队, 怎么办? 3.4.3 循环队列 front rear J6 J4 J5 3 1 2 4 0 5 rear 5 4 0 3 1 2 front J6 J7 J8 J9 J4 J5 front rear 5 4 0 3 1 2 (b)队空 (c)队满 队空、队满 都有front=rear 如何判断循环队列 队空、队满? J7 rear 有两种方法:1)另设一个标志位以区分队空、队满。2)少用一个存储单元,队满条件front=rear+1; front 5 4 0 3 1 2 J6 J7 J8 J4 J5 (d)队满 rear 3.4.3 循环队列 #define MAXSIZE 100 typedef struct{ ElemType data[MAXSIZE]; int front,rear; }SQueue; n 停车场 大门 便道 临时 停放 为给 要离 去的 汽车 让路 而从 停车 场退 出来 的汽 车 停车场内只有一个可停放n汽车的狭长通道, 只有一个大
您可能关注的文档
- 栈的基本结构和操作(C语言实现).doc
- 经典中的经典——万科品类规划.ppt
- 第二章Html高级部分.ppt
- 第1次数据查询1.ppt
- 第8章 组件和模板.ppt
- SM8-TOP2三角图及走针轨迹.doc
- 电子商务技术基础3.ppt
- 铸金所-2015年科学故事TOP10.docx
- 数据结构最新课件10.ppt
- 项目三母版、主题及外观.ppt
- 2025年网络文学平台版权运营模式创新与版权保护体系构建.docx
- 数字藏品市场运营策略洞察:2025年市场风险与应对策略分析.docx
- 全球新能源汽车产业政策法规与市场前景白皮书.docx
- 工业互联网平台安全标准制定:安全防护与合规性监管策略.docx
- 剧本杀剧本创作审核标准2025年优化与行业自律.docx
- 2025年新能源电动巡逻车在城市安防中的应用对城市环境的影响分析.docx
- 全渠道零售案例精选:2025年行业创新实践报告.docx
- 2025年网约车司乘纠纷处理机制优化与行业可持续发展报告.docx
- 2025年宠物烘焙食品市场法规政策解读:合规经营与风险规避.docx
- 2025年宠物行业数据安全监管政策影响分析报告.docx
文档评论(0)