算法与数据结构C语言版课后习题答案(机械工业出版社)第3,4章 习题参考精品.pdfVIP

算法与数据结构C语言版课后习题答案(机械工业出版社)第3,4章 习题参考精品.pdf

  1. 1、本文档共17页,可阅读全部内容。
  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文档。上传文档
查看更多

第3章栈和队列

一、基础知识题

3.1有五个数依次进栈:1,2,3,4,5。在各种出栈的序列中,以3,4先出的

序列有哪几个。(3在4之前出栈)。

【解答】34215,34251,34521

3.2铁路进行列车调度时,常把站台设计成栈式结构,若进站的六辆列车顺序为:

1,2,3,4,5,6,那么是否能够得到435612,325641,154623和135426

的出站序列,如果不能,说明为什么不能;如果能,说明如何得到(即写出

进栈或出栈的序列)。

【解答】输入序列为123456,不能得出435612和154623。不能得到435612的

理由是,输出序列最后两元素是12,前面4个元素(4356)得到后,栈中元素

剩12,且2在栈顶,不可能让栈底元素1在栈顶元素2之前出栈。不能得到154623

的理由类似,当栈中元素只剩23,且3在栈顶,2不可能先于3出栈。

得到325641的过程如下:123顺序入栈,32出栈,得到部分输出序列32;

然后45入栈,5出栈,部分输出序列变为325;接着6入栈并退栈,部分输出序

列变为3256;最后41退栈,得最终结果325641。

得到135426的过程如下:1入栈并出栈,得到部分输出序列1;然后2和3

入栈,3出栈,部分输出序列变为13;接着4和5入栈,5,4和2依次出栈,

部分输出序列变为13542;最后6入栈并退栈,得最终结果135426。

3.3若用一个大小为6的数组来实现循环队列,且当前rear和front的值分别

为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的

值分别为多少?

【解答】2和4

3.4设栈S和队列Q的初始状态为空,元素e1,e2,e3,e4,e5和e6依次通过

栈S,一个元素出栈后即进队列Q,若6个元素出队的序列是e3,e5,e4,

e6,e2,e1,则栈S的容量至少应该是多少?

【解答】4

3.5循环队列的优点是什么,如何判断“空”和“满”。

【解答】循环队列解决了常规用0--m-1的数组表示队列时出现的“假溢出”(即

队列未满但不能入队)。在循环队列中我们仍用队头指针等于队尾指针表示队空,

而用牺牲一个单元的办法表示队满,即当队尾指针加1(求模)等于队头指针时,

表示队列满。也有通过设标记以及用一个队头或队尾指针加上队中元素个数来区

分队列的“空”和“满”的。

3.6设长度为n的链队列用单循环链表表示,若只设头指针,则入队和出队的时

间如何?若只设尾指针呢?

【解答】若只设头指针,则入队的时间为O(n),出队的时间为O(1)。若只设尾

指针,则入队和出队的时间均为O(1)。

3.7指出下面程序段的功能是什么?

(1)voiddemo1(SeqStackS)

{inti,arr[64],n=0;

while(!StackEmpty(S))arr[n++]=Pop(S);

for(i=0;in;i++)Push(S,arr[i]);

}

【解答】程序段的功能是实现了栈中元素的逆置。

(2)voiddemo2(SeqStackS,intm)∥设栈中元素类型为int型

{intx;SeqStackT;

StackInit(T);

while(!StackEmpty(S))

if((x=Pop(S)!=m)Push(T,x);

while(!(StackEmpty(T)){x=Pop(T);Push(S,x);}

}

【解答】程序段的功能是删除了栈中值为m的元素。

(3)voiddemo3(SeQueueQ,intm)∥设队列中元素类型为

文档评论(0)

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

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

1亿VIP精品文档

相关文档