(精品)线性结构习题课.ppt
《(精品)线性结构习题课.ppt》由会员分享,可在线阅读,更多相关《(精品)线性结构习题课.ppt(34页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、线性表,栈,队列习题课主讲老师:陈玉泉助教:刘磊主要内容n顺序表n单链表(单向循环链表)n双链表(双向循环链表)n栈(顺序存储,链式存储)n队列(顺序存储,链式存储)n应用概念题 1.简单比较线性表的顺序和链接两种存储方式各有什么主要优缺点?顺序存储:优点:(1)在结点等长时可随机存取;(2)存储密度高,节省存储空间;(3)用结点的物理次序反映结点之间的逻辑关系。缺点:(1)插入和删除结点时要移动大量结点;(2)必须静态分配连续的空间。概念题(一)链接存储:优点:(1)插入和删除比较灵活,不需要大量移动结点;(2)动态分配空间比较灵活,不需要预先申请最大的连续空间。缺点:(1)增加指针的空间开
2、销;(2)检索必须沿链进行,不能随机存取。概念题(二)2.编号为1,2,3,4的四辆列车,顺序开进一个栈式结构的站台,为开出车站的顺序有多少种可能?请把他们具体写出来。方法:可以先一位一位的假设,然后逐步给出后面的可能的情况。概念题(三)解:共有14种可能,分别如下:4321,3214,3421,3241,2134,2143,2341,2314,2431,1234,1243,1342,1324,1432概念题(四)3.证明:有可能从初始输入序列1,2,n,利用一个栈得到输出序列P1,P2,Pn,(P1,P2,Pn是1,2,n的一种排列)的充分必要条件是,不存在这样的下标i,j,k,满足ijk同
3、时PjPkPi。概念题(五)必要性:用反证法证明。假如存在这样的下标i,j,k,满足ijk同时PjPkPi,则有:(1)由于ijk,三元素出栈的相对次序是Pi,Pj,Pk。(2)因为PjPkPi,所以入栈的相对次序为Pj,Pk,Pi。概念题(六)根据(2),当Pi入栈时,Pj和Pk都在栈中,并且Pj必在Pk之下。所以出栈的相对次序应该是Pi,Pk,Pj,与(1)矛盾。充分性:设序列P1,P2,Pn符合条件,则我们可以用下述方法逐个的使Pi加入该序列。概念题(七)情况1:若Pj在输入序列的剩余部分(假设1,2,i-1已经输入)i,i+1,n中,则把Pj之前的元素及Pj进栈,然后把Pj从栈中取出送
4、入序列。情况2:若Pj已经在栈中,则他必然在栈顶(这是因为栈中元素在任何时刻显然都是从顶向下递减的,而刚离栈的Pj-1大于栈中的所有元素。假如Pj不在栈顶,设栈顶元素是Pk,我们有j-1j Pk Pj,矛盾)把栈顶元素取出送入序列。重复上述步骤,可得到所要求的序列。概念题(八)4.把下面的中缀表达式转化为相应的后缀和前缀表达式:(A+B)*C-D*F+C前缀:(A+B)*C-D*F+C=(A+B)*C)-(D*F)+C)=(+(-(*(+AB)C)(*DF)C)=+-*+ABC*DFC概念题(九)后缀:(A+B)*C-D*F+C=(A+B)*C)-(D*F)+C)=(AB+)C*)(DF*)-
5、)C+)=AB+C*DF*-C+概念题(十)5.设有一个双端队列,元素进入该队列的顺序是1,2,3,4。试分别求出满足下列条件的输出序列。(1)能由输入受限的双端队列得到,但不能由输出受限的双端队列得到的输出序列;(2)能由输出受限的双端队列得到,但不能由输入受限的双端队列得到的输出序列;概念题(十一)解答:允许在一端进行插入和删除,但在另一端只允许插入的双端队列叫做输出受限的双端队列,允许在一端进行插入和删除,但在另一端只允许删除的双端队列叫做输入受限的双端队列。输出受限双端队列不能得到的输出序列有:41324231输入受限双端队列不能得到的输出序列有:42134231 程序设计题6.6.将
6、具有头结点的单链表的所有指针全部将具有头结点的单链表的所有指针全部进行倒向。要求使用的额外空间只能为进行倒向。要求使用的额外空间只能为 O(1),O(1),时间代价只能为时间代价只能为O(n)O(n),其中其中 n n 为为结点个数。结点个数。解析:首先考虑头结点,然后对链表进行解析:首先考虑头结点,然后对链表进行一遍遍历即可。一遍遍历即可。程序设计题(一)templatevoidList:Inverse()if(head-Next=NULL|Head-Next-Next=NULL)return;ListNode*pre=Head-Next,*cur=pre-Next,*next;pre-Ne
7、xt=NULL;程序设计题(二)while(cur)next=cur-Next;cur-Next=pre;pre=cur;cur=next;head-Next=pre;程序设计题(三)7.给出当进栈的车厢的序列为给出当进栈的车厢的序列为1、2、3、4、N时,所有出栈的序列的程序时,所有出栈的序列的程序.程序设计题(四)算法思想:将出栈、入栈的操作次序求出来。pun是push次数,pon是pop次数。当pun=pop=n的时候,操作序列生成完毕。程序设计题(五)void gen(int pun,int pon,int n,char order)if(pun=n&pon=n)perform(n,o
8、rder);elseif(pun n)gen(pun+1,pon,n,order+S);if(pon pun)gen(pun,pon+1,n,order+X);程序设计题(六)void perform(int n,char order)pos=0;while(pos 2*n)switch(orderpos+)case S:PUSH;break;case X:POP;break;程序设计题(七)void main()gen(0,0,4,);程序设计题(八)8.将编号为0和1的两个栈存放于一个数组空间Vm中,栈底分别处于数组的两端。当第0号栈的栈顶指针top0等于-1时该栈为空,当第1号栈的栈顶指
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品 线性 结构 习题
限制150内