第二章顺序存储结的线性表——习题课.pptVIP

第二章顺序存储结的线性表——习题课.ppt

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第二章顺序存储结的线性表——习题课

第二章顺序存储结构的线性表 习题课 选择题 1、一个顺序表的首元存储地址是100,每个元素的长度为2,则第5个元素的地址是____。 A 110 B 108 C 112 D 120 2、一个栈的入栈序列为a,b,c,d,e,则栈的不可能的输出序列是____。 A edcba B decba C dceab D abcde 3、若已知一个栈的入栈序列是1,2,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi=_____。 A i B n-i C n-i+1 D 不能确定 4、一个队列的入队序列为1,2,3,4,则其输出序列可能是____。 A 4,3,2,1 B 1,2,3,4 C 1,4,2,3 D 3,2,4,1 5、判定一个容量为m的队列为空的条件是_____。 A rear-front=m B front-rear=m C rear-front-1=m D front-rear-1=m E rear=front F rear=front-1 6、栈和队列的共同点是_____。 A、都是先进后出 B、都是先进先出 C、只允许在端点处插入和删除元素 D、没有共同点 填空题 1、向量、栈和队列都是____结构,可以在向量的__位置插入和删除元素;对于栈只能在__插入和删除元素;对于队列只能在___插入元素和___删除元素。 2、向一个长度为n的向量的第i(0in+2)个元素之前插入一个元素时,需向后移动____个元素。 3、向一个长度为n的向量中删除第i(0in+2)个元素时,需向前移动____个元素。 4、一个栈的输入序列是12345,如果栈的输出序列43512是_____。 5、一个栈的输入序列是12345,如果栈的输出序列12345是_____。 算法编写题 1、已知一个顺序表按元素值的升序排列,编写一个算法:插入一个元素后保持该顺序表是有序的。 PROCEDURE Insert(ET a[],int n,int x) If(x=a[n]) a[n+1]=x; Else { int i=1; while(x=a[i]) do i=i+1; for j=n to i do a[j+1]=a[j]; a[i]=x; n=n+1; } END 第二题 试写出在顺序存储结构下逆转线性表的算法,要求使用最少的附加空间。 PROCEDURE nizhuan(ET a[],int n) For k=1 to n/2 do { t=a[k]; a[k]=a[n-k+1]; a[n-k+1]=t; } END 第三题 有两个顺序表A和B,分别有m个和n个元素,其元素均以从小到大的升序排列,编写一个算法将它们合并成一个顺序表C,要求C的元素也是以从小到大的升序排列。 比如A={3,5,8,11} B={2,6,8,9,11,15,20} 则 C={2,3,5,6,8,8,9,11,11,15,20} PROCEDURE hebing(a[], b[],m,n) ET a[], ET b[],int m,int n i=1; j=1; k=1; While(i=m and j=n) do If (a[i]b[j]) { c[k]=a[i];i=i+1;k=k+1; } Else {c[k]=b[j];j=j+1;k=k+1; } If(j=n) for t=(i+1) to m do { c[k]=a[t];k=k+1 } If (i=m) for t=(j+1) to n do { c[k]=b[t]; k=k+1; } 第四题 设有n个人围成一圈,每个人的编号依次为1,2,3,…,n。现从编号为k的人开始报数,数到m的人便出列,接着从出列的下一个人开始重新报数,数到m的人又出列,以此类推,直到所有的人都出列为止。请写出算法求出n个人的出列顺序。 分析 设以自然数1,2,3,…,n为元素构成一个循环队列,并用一个数组a存放该队列中每个元素的直接后继,其中a[i]表示i的后继。显然该数组初始化时应该这样: a[i]=i+1, i=1,2,…,n-1 a[n]=1; 设x为当前所求的出列者(序号),它的前驱为t,则有a[t]=x,而且x的后继为a[x],则当前的队列为 ……, t , x , a[x] , …… 当x出列后,队列变为 ……, t , a[x] , …… 显然,此时

文档评论(0)

ldj215323 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档