- 1、本文档共77页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《数据结构与算法》第三章 堆栈和队列
Chapter 3Stack Queue 如何模拟一个铁道交换场地? 排队候车 Section 1Stack 栈的表示和实现 栈的链接表示 — 链式栈 链式栈无栈满问题,空间可扩充 插入与删除仅在栈顶处执行 链式栈的栈顶在链头 表达式有三种表示: 1、中缀(infix)表示 操作数操作符操作数,如 A+B; 2、前缀(prefix)表示 操作符操作数操作数,如 +AB; 3、后缀(postfix)表示 操作数操作数操作符,如 AB+; 中缀表达式如何转换成前缀和后缀表达式? a+b*c-(d+e) 1:按照运算符的优先级对所有的运算单位加括号 式子变成:((a+(b*c))-(d+e)) 2:前缀:把运算符号移动到对应的括号前面 则:-( +(a *(bc)) +(de)) 把括号去掉:-+a*bc+de 前缀式子出现 后缀:把运算符号移动到对应的括号后面 则:((a(bc)* )+ (de)+ )- 把括号去掉:abc*+de+- 后缀式子出现 Section 2Queue 队列 ( Queue ) 定义 队列是只允许在一端删除,在另一端插入的顺序表 允许删除的一端叫做队头(front),允许插入的一端叫做队尾(rear)。 特性 先进先出(FIFO, First In First Out) 循环队列 (Circular Queue) 队列存放数组被当作首尾相接的表处理。 队头、队尾指针加1时从maxSize -1直接进到0,可用语言的取模(余数)运算实现。 队头指针进1: front = (front+1) % maxSize; 队尾指针进1: rear = (rear+1) % maxSize; 队列初始化:front = rear = 0; 队空条件:front == rear; 队满条件:(rear+1) % maxSize == front 队列的链接表示 — 链式队列 队头在链头,队尾在链尾。 链式队列在进队时无队满问题,但有队空问题。 队空条件为 front == NULL front rear 链式队列类的定义 template class Type class Queue; template class Type class QueueNode {private: Type data; QueueNodeType *link; public: friend class QueueType; QueueNode(Type d, QueueNodeType *l = NULL ) : data (d), link (l) { } }; template class Type class Queue {private: QueueNodeType *front, *rear; public: Queue( ) : rear(NULL), front(NULL){ } ~Queue ( ); template class Type StackType::~Stack ( ) { StackNodeType *p; while ( top != NULL ) { p = top; top = top-link; delete p; } } template class Type void StackType::Push ( Type x ) { top = new StackNodeType ( x, top ); } 链栈不存在栈满的情况,故可以直接入栈 template class Type int StackType::Pop ( Type x ) { if ( IsEmpty ( ) ) return 0; StackNodeType *p = top; top = top-link; x = p-data; delete p; return 1; } template class Type int StackType::GetTop ( Type x ) { if ( IsEmpty ( ) ) return 0; x = top-data; return 1; } 栈的应用例子 1. 表达式求值 这里限定的表达式求值问题是:用户输入一个包含“+”、“-”、“*”、“/”、正整数和圆括号的合法数学表达式,计算该表达式的运算结果。 2. 常见表达式 1+
您可能关注的文档
- “电路原理”第1-6章作业.doc
- “电路原理”第1-6章作业51835.doc
- “好客山东贺年会暨宝相寺景区春节庙会”启动仪式隆重举行.doc
- “青出于蓝”青少年志愿者服务队(第一节)ppt.ppt
- “风情欧美,雪花盛开”圣诞节客户联谊会公...73984.ppt
- 《 第一节 生命的诞生》.ppt
- 《windows网络操作系统》第3章__域的创建与管理56893.ppt
- 《Zigbee入门与实践》第五章 Zigbee组网实战入门.pdf
- 《上承战略,下接人才》配套表格、图片(5-7章).pdf
- 《windows网络操作系统》第3章__域的创建与管理56881.ppt
- 场地脚手架工程施工方案(3篇).docx
- 2024年浙江省丽水市松阳县玉岩镇招聘社区工作者真题及参考答案详解一套.docx
- 2024年河南省郑州市惠济区古荥镇招聘社区工作者真题及答案详解一套.docx
- 2024年浙江省杭州市淳安县文昌镇招聘社区工作者真题及完整答案详解1套.docx
- 2024年浙江省台州市三门县小雄镇招聘社区工作者真题带答案详解.docx
- 2024年浙江省宁波市余姚市河姆渡镇招聘社区工作者真题及完整答案详解1套.docx
- 2024年浙江省丽水市景宁畲族自治县雁溪乡招聘社区工作者真题及答案详解一套.docx
- 2024年浙江省杭州市临安市板桥乡招聘社区工作者真题及答案详解一套.docx
- 2024年湖北省宜昌市点军区土城乡招聘社区工作者真题及答案详解一套.docx
- 2024年浙江省台州市路桥区桐屿街道招聘社区工作者真题附答案详解.docx
文档评论(0)