欢迎来到天天文库
浏览记录
ID:17449282
大小:26.24 KB
页数:12页
时间:2018-08-31
《课后答案数据结构》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、课后答案数据结构第一章三、计算下列程序段中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+12)/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+n2)/2f(n)=[(1+2+3+……+n)+(12+22+32+……+n2)]/2=[(1+n)×n/2+n(n+1)(2n+1)/6]/2
2、=n(n+1)(n+2)/6=n3/6+n2/2+n/3区分语句频度和算法复杂度:O(f(n))=O(n3)四、试编写算法求一元多项式Pn(x)=a0+a1x+a2x2+a3x3+…anxn的值Pn(x0),并确定算法中的每一语句的执行次数和整个算法的时间复杂度,要求时间复杂度尽可能的小,规定算法中不能使用求幂函数。注意:本题中的输入ai(i=0,1,…,n),x和n,输出为Pn(x0).通常算法的输入和输出可采用下列两种方式之一:(1)通过参数表中的参数显式传递;(2)通过全局变量隐式传递。试讨论这两种方法的优缺点,并在本题算法中以你认为较好的
3、一种方式实现输入和输出。[提示]: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)在顺序表中,逻辑上相邻的元素,其物理位置______相邻。在单链
4、表中,逻辑上相邻的元素,其物理位置______相邻。(3)在带头结点的非空单链表中,头结点的存储位置由______指示,首元素结点的存储位置由______指示,除首元素结点外,其它任一元素结点的存储位置由__其直接前趋的next域__指示。课后答案网www.khdaw.com2.3已知L是无表头结点的单链表,且P结点既不是首元素结点,也不是尾元素结点。按要求从下列语句中选择合适的语句序列。a.在P结点后插入S结点的语句序列是:_(4)、(1)_。b.在P结点前插入S结点的语句序列是:(7)、(11)、(8)、(4)、(1)。c.在表首插入S结点的
5、语句序列是:(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递增有
6、序。试写一算法,将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>同时以待移动元素下标
7、m和应移入位置j为中心:<方法2>以应移入位置j为中心,计算待移动元素下标:2.6已知线性表中的元素(整数)以值递增有序排列,并以单链表作存储结构。试写一高效算法,删除表中所有大于mink且小于maxk的元素(若表中存在这样的元素),分析你的算法的时间复杂度(注意:mink和maxk是给定的两个参变量,它们的值为任意的整数)。[提示]:注意检查mink和maxk的合法性:minknext;while(p!=NULL&&p->data<=m
8、ink){pre=p;p=p->next;}(2)找到最后一个应删结点的后继s,边找边释放应删结点s=p;while(s!=NULL&&
此文档下载收益归作者所有