2020算法与数据结构C语言习题参考答案1-5章.docxVIP

2020算法与数据结构C语言习题参考答案1-5章.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE PAGE # / 37 1.绪论 1.将下列复杂度由小到大重新排序: A.2nB.n!C.n5 【答】 10 000n*log 2(n)n5 2nn! 2.将下列复杂度由小到大重新排序: A.n*log 2(n)B.n+n2+n3 【答】 24n0.5n*log 2(n) n+n2+n3 3.用大“ C”示法描述下列复杂度: A.5n5/2+n2/5 3n4+n* log 2(n) 【答】 A: C (n5/2)B: C (n)D. 10 000E. n*log 2(n)C. 24D. n0.5B. 6*log 2(n) + 9n 5n2+n3/2 C: C (n4)D: C (n2)4.按照增长率从低到高的顺序排列以下表达式: 4n2,log3n,3n,20n,2000,log2n,n2/3。又 n!应排在第几位? 【答】按照增长率从低到高依次为: 2000, log 3n, log 2n,n2/3, 20n, 4n2, 3n。 n!的增长率比它们中的每一个都要大,应排在最后一位。 计算下列程序片断的时间代价: int i=1; while(i=n) { printf( “ i=n%”d,i); i=i+1; } 【答】循环控制变量i从1增加到n,循环体执行n次,第一句i的初始化 执行次数为1,第二句执行n次,循环体中第一句printf执行n次,第二句i从 1循环到n,共执行n次。所以该程序段总的时间代价为: T(n) = 1 +n+ 2n= 3n+ 1 =O(n) 计算下列程序片断的时间代价: int i=1; while(i=n) { int j=1; while(j=n) { int k=1; while(k=n) { printf( “ i=%d,j=%d,k=n%”d,I,j,k); k=k+1; } j=j+1; } i=i+1; } 【答】循环控制变量i从1增加到n,最外层循环体执行n次,循环控制变 量j从1增加到n,中间层循环体执行n次,循环控制变量k从1增加到n,最 内层循环体执行 n 次,所以该程序段总的时间代价为: T(n) = 1 +n+n {1 +n+n[1 +n+ 2n+1] +1 +1 + 1 = 3n3+ 3n2+4n+2 =O(n3) 2.线性表 1 .试写一个插入算法 int insertPost_seq(palist, p, x ),在 palist 所指顺序表 中,下标为 p 的元素之后,插入一个值为 x 的元素,返回插入成功与否的标 志。 【答】 数据结构 采用 2.1.2 节中顺序表定义。 int insertPost_seq(PseqList palist, int p, DataType x ) { /*在palist所指顺序表中下标为p的元素之后插入元素x */ int q; if ( palist- n = palist- MAXNUM ) { pri ntf( “ Overflow” ); retur nO; } if (p0||ppalist- n-1 ){ printf( “ Not exis”! );return 0; } for(q=palist-n - 1; q=p+1; q--)/*插入位置及之后的元素均后移一个位置 */ palist-eleme nt[q+1] = palist-eleme nt[q]; palist-eleme nt[p+1] = x; palist- n 二 palist- n + 1; return 1; }/*插入元素x */ /*元素个数加1 */ /*不存在下标为p的元素*/ /*溢出*/ 2试写一个删除算法deleteV_seq(palist, x,在palist所指顺序表中,删除一 个值为x的元素,返回删除成功与否的标志。 【答】 数据结构 采用2.1.2节中顺序表定义。 in tdeleteV_seq(PseqList palist, p, DataType x ) { /*在palist所指顺序表中删除值为x的元素*/ int p,q; for(p=0;pvn;p++)/*查找值为x的元素的下标*/ if(x==palist-eleme nt[p]){ for(q=p; qpalist- n-1; q++) /*被删除元素之后的元素均前移一个位置*/ palist-eleme nt[q] = palist-eleme nt[q+1]; palist- n 二 palist- n - 1; return 1 ;/*元素个数减1 */ } return 0; } 3.设有一线性表e = (e 0, e 1, e 2,,, e n 1),其逆线性表定义为e = (e n 1,,, e 2, e 1,e 0)

文档评论(0)

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

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

1亿VIP精品文档

相关文档