数据结构C语言版第三章栈和队列.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《数据结构C语言版第三章栈和队列.pdf》由会员分享,可在线阅读,更多相关《数据结构C语言版第三章栈和队列.pdf(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第三章第三章栈栈和和队列队列重点难点重点难点掌握栈和队列这两种抽象数据类型的特点,并能在相应的应用问题中正确选用它们;熟练掌握栈类型的两种实现方法;熟练掌握循环队列和链队列的基本操作实现算法;理解递归算法执行过程中栈的状态变化过程,便于更好地使用递归算法。典型例题典型例题1.1.设将整数设将整数 1 1,2 2,3 3,4 4 依次进栈,但只要出栈时栈非空,则可将出栈操作按任何次序夹入依次进栈,但只要出栈时栈非空,则可将出栈操作按任何次序夹入其中,请回答下述问题:其中,请回答下述问题:(1)(1)若入、出栈次序为若入、出栈次序为 Push(1),Pop(),Push(2),Push(3),Po
2、p(),Pop(),Push(4),Pop(),Push(1),Pop(),Push(2),Push(3),Pop(),Pop(),Push(4),Pop(),则出则出栈的数字序列为何栈的数字序列为何(这里这里 Push(i)Push(i)表示表示 i i 进栈,进栈,Pop()Pop()表示出栈表示出栈)?)?(2)(2)能否得到出栈序列能否得到出栈序列 14231423 和和 1432?1432?并说明为什么不能得到或者如何得到。并说明为什么不能得到或者如何得到。(3)(3)请分析请分析 1 1,2 2,3 3,4 4 的的 2424 种排列中,哪些序列是可以通过相应的入出栈操作得到种排列
3、中,哪些序列是可以通过相应的入出栈操作得到的。的。【解】(1)出栈序列为:1324(2)不 能 得 到1423序 列。因 为 要 得 到14 的 出 栈 序 列,则 应 做Push(1),Pop(),Push(2),Push(3),Push(4),Pop()。这样,3 在栈顶,2 在栈底,所以不能得到 23的 出 栈 序 列。能 得 到1432的 出 栈 序 列。具 体 操 作 为:Push(1),Pop(),Push(2),Push(3),Push(4),Pop(),Pop(),Pop()。(3)在 1,2,3,4 的 24 种排列中,可通过相应入出栈操作得到的序列是:1234,1243,1
4、324,1342,1432,2134,2143,2314,2341,2431,3214,3241,3421,4321不能得到的序列是:1423,2413,3124,3142,3412,4123,4132,4213,4231,43122.2.循环队列的优点是什么循环队列的优点是什么?如何判别它的空和满如何判别它的空和满?【解】循环队列的优点是:它可以克服顺序队列的 假上溢现象,能够使存储队列的向量空间得到充分的利用。判别循环队列的空或满不能以头尾指针是否相等来确定,一般是通过以下几种方法:一是另设一布尔变量来区别队列的空和满。二是少用一个元素的空间,每次入队前测试入队后头尾指针是否会重合,如果会
5、重合就认为队列已满。三是设置一计数器记录队列中元素总数,不仅可判别空或满,还可以得到队列中元素的个数。3.3.设循环队列的容量为设循环队列的容量为 4040(序号从(序号从 0 0 到到 3939),现经过一系列的入队和出队运算后,有),现经过一系列的入队和出队运算后,有 front=11front=11,rear=19;rear=19;front=19front=19,rear=11rear=11;问在这两种情况下,循环队列中各;问在这两种情况下,循环队列中各有元素多少个?有元素多少个?【解】用队列长度计算公式:(Nrf)%N L=(401911)%40=8 L=(401119)%40=32
6、4.4.说明线性表、栈与队的异同点。说明线性表、栈与队的异同点。【解】相同点:都是线性结构,都是逻辑结构的概念。都可以用顺序存储或链表存储;栈和队列是两种特殊的线性表,即受限的线性表,只是对插入、删除运算加以限制。不同点:运算规则不同,线性表为随机存取,而栈是只允许在一端进行插入、删除运算,因而是后进先出表 LIFO;队列是只允许在一端进行插入、另一端进行删除运算,因而是先进先出表 FIFO。用途不同,堆栈用于子程调用和保护现场,队列用于多道作业处理、指令寄存及其他运算等等。5.5.设计算法判断一个算术表达式的圆括号是否正确配对。设计算法判断一个算术表达式的圆括号是否正确配对。(提示:提示:对
7、表达式进行扫描,对表达式进行扫描,凡遇到凡遇到(就进栈,遇就进栈,遇)就退掉栈顶的就退掉栈顶的(,表达式被扫描完毕,栈应为空。,表达式被扫描完毕,栈应为空。)【解】算法如下:【解】算法如下:int PairBracket(char*SR)/检查表达式 ST 中括号是否配对int i;SeqStack S;/定义一个栈InitStack(&s);for(i=0;idata;top=top-link;Cx=top;top=top-link;(5)设有一个递归算法如下int fact(int n)/n 大于等于 0if(nlink;x=top-link;Dx=top-link;则计算 fact(n)
8、需要调用该函数的次数为()。A n+1B n-1C nD n+2(6)栈在()中有所应用。A递归调用B函数调用C表达式求值D前三个选项都有(7)为解决计算机主机与打印机间速度不匹配问题,通常设一个打印数据缓冲区。主机将要输出的数据依次写入该缓冲区,而打印机则依次从该缓冲区中取出数据。该缓冲区的逻辑结构应该是()。A队列 B栈C 线性表D有序表(8)设栈S 和队列 Q 的初始状态为空,元素e1、e2、e3、e4、e5 和 e6 依次进入栈 S,一个元素出栈后即进入 Q,若 6 个元素出队的序列是 e2、e4、e3、e6、e5 和 e1,则栈 S 的容量至少应该是()。A2B3C4D 6(9)在一
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构C语言版第三章 栈和队列 数据结构 语言版 第三 队列
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内