耿国华数据结构C语言的描述课后大部分习题答案

第一章三、计算下列程序段中X=X+1的语句频度for(i=1;i<=n;i++)for(j=1;j<=i;j++)for(k=1;k<=j;k++)x=x+1;[提示]:i=1时:1=(1+1)×1/2=(1+1)/2i=2时:1+2=(1+2)×2/2=(2+22)/2i=3时:1+2+3=(1+3)×3/2=(3+32)/2…i=n时:1+2+3+……+n=(1+n)×n/2=(n+n)/2f(n)=[(1+2+3+……+n)+(1+2+3+……+n)]/2=[(1+n)×n/2+n(n+1)(2n+1)/6]/2=n(n+1)(n+2)/6=n/6+n/2+n/3区分语句频度和算法复杂度:O(f(n))=O(n)四、试编写算法求一元多项式Pn(x)=a+ax+ax+ax+…ax的值P(x),并确定算法中的每一语句的执行次数和整个算法的时间复杂度,要求时间复杂度尽可能的小,规定算法中不能使用求幂函数。注意:本题中的输入a(i=0,1,…,n),x和n,输出为P(x).通常算法的输入和输出可采用下列两种方式之一:(1)通过参数表中的参数显式传递;(2)通过全局变量隐式传递。试讨论这两种方法的优缺点,并在本题算法中以你认为较好的一种方式实现输入和输出。[提示]:floatPolyValue(floata[],floatx,intn){……}核心语句:p=1;(x的零次幂)s=0;i从0到n循环s=s+a[i]*p;p=p*x;或:p=x;(x的一次幂)s=a[0];i从1到n循环s=s+a[i]*p;p=p*x;第二章2.1描述以下三个概念的区别:头指针,头结点,首元素结点。2.2填空:(1)在顺序表中插入或删除一个元素,需要平均移动一半元素,具体移动的元素个数与插入或删除的位置有关。(2)在顺序表中,逻辑上相邻的元素,其物理位置相邻。在单链表中,逻辑上相邻的元素,其物理位置相邻。(3)在带头结点的非空单链表中,头结点的存储位置由指示,首元素结点的存储位置由指示,除首元素结点外,其它任一元素结点的存储位置由其直接前趋的next域指示。2.3已知L是无表头结点的单链表,且P结点既不是首元素结点,也不是尾元素结点。按要求从下列语句中选择合适的语句序列。a.在P结点后插入S结点的语句序列是:(4)、(1)。b.在P结点前插入S结点的语句序列是:(7)、(11)、(8)、(4)、(1)。c.在表首插入S结点的语句序列是:(5)、(12)。d.在表尾插入S结点的语句序列是:(11)、(9)、(1)、(6)。供选择的语句有:(1)P->next=S;(2)P->next=P->next->next;(3)P->next=S->next;(4)S->next=P->next;(5)S->next=L;(6)S->next=NULL;(7)Q=P;(8)while(P->next!=Q)P=P->next;(9)while(P->next!=NULL)P=P->next;(10)P=Q;(11)P=L;(12)L=S;(13)L=P;2.4已知线性表L递增有序。试写一算法,将X插入到L的适当位置上,以保持线性表L的有序性。[提示]:voidinsert(SeqList*L;ElemTypex)<方法1>(1)找出应插入位置i,(2)移位,(3)……<方法2>参P.2292.5写一算法,从顺序表中删除自第i个元素开始的k个元素。[提示]:注意检查i和k的合法性。(集体搬迁,“新房”、“旧房”)<方法1>以待移动元素下标m(“旧房号”)为中心,计算应移入位置(“新房号”):for(m=i-1+k;m<=L->last;m++)L->elem[m-k]=L->elem[m];<方法2>同时以待移动元素下标m和应移入位置j为中心:<方法2>以应移入位置j为中心,计算待移动元素下标:2.6已知线性表中的元素(整数)以值递增有序排列,并以单链表作存储结构。试写一高效算法,删除表中所有大于mink且小于maxk的元素(若表中存在这样的元素),分析你的算法的时间复杂度(注意:mink和maxk是给定的两个参变量,它们的值为任意的整数)。[提示]:注意检查mink和maxk的合法性:mink<maxk不要一个一个的删除(多次修改next域)。(1)找到第一个应删结点的前驱prepre=L;p=L->next;while(p!=NULL&&p->data<=mink){pre=p;p=p->next;}(2)找到最后一个应删结点的后继s,边找边释放应删结点s=p;while(s!=NULL&&s->data<mink){t=s;s=s->next;free(t);}(3)pre->next=s;2.7试分别以不同的存储结构实现线性表的就地逆置算法,即在原表的存储空间将线性表(a1,a...,a)逆置为(a,a,...,a)。(1)以一维数组作存储结构,设线性表存于a(1:arrsize)的前elenum个分量中。(2)以单链表作存储结构。[方法1]:在原头结点后重新头插一遍[方法2]:可设三个同步移动的指针p,q,r,将q的后继r改为p2.8假设两个按元素值递增有序排列的线性表A...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

文秘专家
机构认证
内容提供者

1

确认删除?