算法設计题部分.docVIP

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

我们用的教材是清华大学出版社出版,由严蔚敏、吴伟民主编的《数据结构(C语言版)》 考试范围:(不包括下述章节中带星号的章节,其中红色标记的为重点章节) 第一章:绪论 第二章:线性表 第三章:栈和队列 第六章:树和二叉树 第七章:图 第九章:查找 《数据结构基础》文档主要是针对选择、填空、判断的; 这个文档主要是关于简答、解决问题、算法设计的 题目基本上附有答案,如果不存在输入错误的话,应该可以称得上是权威吧,但是限于整理的仓促还是仅供参考吧,呵呵 有极个别题答案找不到了,我也没再自己去做了,看您自己能不能不上。 据说算法设计的范围是:1..线性表的基本操作 2.二叉树的遍历(教材131面算法6.2/6.3/6.4) 3.图的创建 以下的题目其实可以不看,应该对紧急应考帮助不大,对于大题还是得以教材为主。 简答题部分 绪论简答: 1、求下列算法段的语句频度及时间复杂度 for(i=1; i=n; i++) for(j =1; j =i ; j++) x=x+1; 分析:该算法为一个二重循环,执行次数为内、外循环次数相乘,但内循环次数不固定,与外循环有关,因些,时间频度T(n)=1+2+3+…+n=n*(n+1)/2 有 1/4≤T(n)/n2≤1,故它的时间复杂度为O(n2), 即T(n)与n2 数量级相同。 2、分析下列算法段的时间频度及时间复杂度 for (i=1;i=n;i++) for (j=1;j=i;j++) for ( k=1;k=j;k++) x=i+j-k; 分析算法规律可知时间频度T(n)=1+(1+2)+(1+2+3)+...+(1+2+3+…+n) 由于有1/6 ≤ T(n)/ n3 ≤1,故时间复杂度为O(n3)树的问答题 1.一棵深度为h的满m叉树具有如下性质:第h层上的结点都是叶结点,其余各层上每个结点都有m棵非空子树。若按层次从上到下,每层从左到右的顺序从1开始对全部结点编号,试计算: (1)第k层结点数(1≤k≤h)。 (2)整棵树结点数。 (3)编号为i的结点的双亲结点的编号。 (4)编号为i的结点的第j个孩子结点(若有)的编号。 答:(1)mk-1 (2)(mh-1)/(m-1) (3)i=1时,该结点为根,无双亲结点;否则其双亲结点的编号为(i+m-2)/m (4)编号为i的结点的第j个孩子结点(若有)的编号为i*m+(j-(m-1)) 2.证明:一个满k叉树上的叶子结点数n0和非叶子结点数n1之间满足以下关系: n0=(k-1)n1+1 证明:设树结点为n, 则n=n0+n1 因是满k叉树, 每个非叶子结点引 出k个分支,故有k*n1个分支。 除根外,每个分支引出一个结点,则树共有k*n1 +1个结点。 所以 n0+n1=k*n1+1 n0=(k-1)*n1+1 算法设计题部分 1、试编写一个求已知单链表的数据域的平均值的函数(数据域数据类型为整型)。 解答:#include stdio.h #include malloc.h typedef struct node {int data; struct node *link;}NODE; int aver(NODE *head) {int i=0,sum=0,ave; NODE *p; p=head; while(p!=NULL) {p=p-link;++i; sum=sum+p-data;} ave=sum/i; return (ave); } 2、已知带有头结点的循环链表中头指针为head,试写出删除并释放数据域值为x的所有结点的c函数。 解答:#include stdio.h #include malloc.h typedef struct node {int data; struct node *link;}NODE; void del_link(NODE *head,int x) {NODE *p,*q,*s; p=head; q=head-link; while(q!=head) { if(q-data==x) {p-link=q-link; s=q; q=q-link; free(s);} else {p=q; q=q-link;}} } 3、某百货公司仓库中有一批电视机,按其价格从低到高的次序构成一个循环链表,每个结点有价格、数量和链指针三个域。现出库(销售)m台价格为h的电视机,试编写算法修改原链表。 解答:void del(NODE *he

文档评论(0)

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

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

1亿VIP精品文档

相关文档