- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
栈 队列 栈和队列的应用 栈和队列也是线性表,是限制了存取点的线性表,故又称操作受限的线性表。广泛用于各种软件系统。 3.1 栈(stack) 一、栈的定义和基本运算 定义:限定仅在表的一端进行插入和删除操作的线性表。称插入、删除的一端叫栈顶(TOP),另一端叫栈底(BOTTOM)。不含元素的空表称空栈。 特点:先进后出(FILO)或后进先出(LIFO) 栈的基本操作 二、栈的存储结构(一)顺序存储结构——顺序栈 进栈示例 2、顺序栈的定义 3、顺序栈的基本运算 二、 链栈——栈的链接存储 链栈基本操作的实现—入栈操作 链栈基本操作的实现—出栈操作 栈 队列 栈和队列的应用 3.2 队列 ( Queue ) 队列的基本运算 二、队列的存储结构 1、顺序队列: 用一维数组实现,记sq[M] 顺序队列存在问题 虽队列未满,但由于队尾指针已到达上界,无法再做入队操作,发生溢出——假溢出. 解决方案——循环队列 基本思想:把数组设想成首尾相接的环形,存储在其中的队列称循环队列. 让sq[0]接在sq[M-1]之后, 若rear+1==M,则令rear=0. 2、循环队列 (Circular Queue) 循环队列实现要点: 循环队列上的基本操作 (1)初始化 void InitQueue_sq(SqQueue Q) { //构造一个空队列; Q.elem=new elemtype[QUEUE_INIT_SIZE+1]; //分配比实际可用多1的空间 Q.front=Q.rear=0; Q.queuesize=QUEUE_INIT_SIZE; } 循环队列上的基本操作 (2) 入队操作 void EnQueue_sq(SqQueue Q, elemtype x) {// 在Q中插入值为x的队尾元素 if ((Q.rear+1)%Q.queuesize==Q.front) incrementQueuesize(Q); Q.elem[Q.rear]=x; //插入到队尾 Q.rear=(Q.rear+1)%Q.queuesize; //修改队尾指针 } 循环队列上的基本操作 (3) 出队操作 int DeQueue_sq(SqQueue Q, elemtype e) {// 删除Q中队头元素,并返回其值 if (Q.front==Q.rear) return 0; e=Q.elem[Q.front]; Q.front=(Q.front+1)%Q.queuesize; //修改队头指针 return 1; } 3、队列的链接表示 — 链式队列 链队列上的操作 链队列上的操作 链队列上的操作 栈 队列 栈和队列的应用 3.3 栈的应用 括号匹配问题求解 match(char exp[], int n) { //检验表达式中所含括号是否正确嵌套 int state=1; ch=*exp++; while(ch!=‘#’ state) { swith of ch { case ’[’||’(’ : {Push(S, ch); break; } //若是左括号,一律压入栈中 case ’)’ : { if (! Stackempty(S)Gettop(S)=‘(’) Pop(S,e); else state=0; break; } case ’]’ : { if (! Stackempty(S)Gettop(S)=‘[’) Pop(S,e); else state=0; break; } } // swith ch=*exp++; }//while if (stateStackempty(S)) return 1; else return 0; }//match 栈的应用——以递归为例 3、递归设计 递归是一种重要算法,可使问题的描述和求解简 洁、清晰。 递归算法设计一般有两步:首先,将大(规模)问题分解成多个较小的(求解过程、环境)相似的子问题;然后确定一个或多个可直接求解的最小子问题(递归结束条件)。 即两个要点:设计子问题,使其规模逐渐减小(经有限次递归后)——逐渐接近递归终止条件;设置递
您可能关注的文档
- 12环境概论第12讲 Regional and Global Atmospheric Changes.ppt
- 110kv单侧电源环形网络继电保护设计.doc
- 110KV线路继电保护及其二次回路设计.doc
- 315.011.2FA景瑞琴 张少萱.doc
- 2005-2007年《C语言程序设计》试卷带答案.doc
- 2008年电机学(1)试题A卷.pdf
- 2008年电机学(1)试题B卷.pdf
- 2008年山东大学英语部分试题.pdf
- 2009年电机学(1)试题B卷.pdf
- 2010年合工大第50期党校毕业班结业考试(商学系模拟试卷).doc
- 2025至2030年中国FPC双面分层板市场分析及竞争策略研究报告.docx
- 2025年中国不锈钢双层热水杀菌釜数据监测研究报告.docx
- 2025年中国食品桶数据监测研究报告.docx
- 2025至2030年中国带挡边皮带线市场分析及竞争策略研究报告.docx
- 2025年中国全自动充气控制盘数据监测研究报告.docx
- 2025-2026学年初中信息技术(信息科技)八年级下册苏科版(2023)教学设计合集.docx
- 2025-2026学年高中地理中图版2007必修•第2册-中图版2004教学设计合集.docx
- 2025-2026学年高中化学选修4 化学反应原理鲁科版教学设计合集.docx
- 2025-2026学年高中历史选修2 近代社会的民主思想与实践岳麓版教学设计合集.docx
- 2025-2026学年高中生物人教版必修2遗传与进化-人教版教学设计合集.docx
文档评论(0)