线性结构习题课.pptVIP

  • 5
  • 0
  • 约6.34千字
  • 约 34页
  • 2017-06-05 发布于四川
  • 举报
线性表,栈,队列习题课 主讲老师:陈玉泉 助教:刘磊 主要内容 顺序表 单链表(单向循环链表) 双链表(双向循环链表) 栈(顺序存储,链式存储) 队列(顺序存储,链式存储) 应用 概念题 1.简单比较线性表的顺序和链接两种存储方式各有什么主要优缺点? 顺序存储: 优点:(1)在结点等长时可随机存取;(2)存储密度高,节省存储空间;(3)用结点的物理次序反映结点之间的逻辑关系。缺点:(1)插入和删除结点时要移动大量结点;(2)必须静态分配连续的空间。 概念题(一) 链接存储: 优点:(1)插入和删除比较灵活,不需要大量移动结点;(2)动态分配空间比较灵活,不需要预先申请最大的连续空间。缺点:(1)增加指针的空间开销;(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同时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从栈中取出送入序列。 情况2:若Pj已经在栈中,则他必然在栈顶(这是因为栈中元素在任何时刻显然都是从顶向下递减的,而刚离栈的Pj-1大于栈中的所有元素。假如Pj不在栈顶,设栈顶元素是Pk,我们有 j-1jk,而Pj-1 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 *) -)C +) =AB +C *DF *-C + 概念题(十) 5. 设有一个双端队列,元素进入该队列的顺序是1, 2, 3, 4。试分别求出满足下列条件的输出序列。 (1) 能由输入受限的双端队列得到,但不能由输出受限的双端队列得到的输出序列; (2) 能由输出受限的双端队列得到,但不能由输入受限的双端队列得到的输出序列; 概念题(十一) 解答:允许在一端进行插入和删除,但在另一端只允许插入的双端队列叫做输出受限的双端队列,允许在一端进行插入和删除,但在另一端只允许删除的双端队列叫做输入受限的双端队列。? 输出受限双端队列不能得到的输出序列有: 4 1 3 2 4 2 3 1 输入受限双端队列不能得到的输出序列有: 4 2 1 3 4 2 3 1 程序设计题 6.将具有头结点的单链表的所有指针全部进行倒向。要求使用的额外空间只能为 O(1),时间代价只能为O(n),其中 n 为结点个数。 解析:首先考虑头结点,然后对链表进行一遍遍历即可。 程序设计题(一) templateclass Type void ListType :: Inverse ( ) { if (head-Next==NULL ||Head-Next-Next==NULL) return; ListNodeType *pre=Head-Next, *cur=pre-Next,*next; pre-Next=NULL; 程序设计题(二) while (cur) { next=cur-Next; cur

文档评论(0)

1亿VIP精品文档

相关文档