ImageVerifierCode 换一换
格式:DOCX , 页数:54 ,大小:43.31KB ,
资源ID:16401520      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16401520.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(严蔚敏 数据结构课后习题及答案解析Word格式.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

严蔚敏 数据结构课后习题及答案解析Word格式.docx

1、1. C 2.C 3. C 4. A、B 5. C 6.C、B二、判断题:1、 2、 3、 4、 5、三、填空题1、线性、树形、图形、集合? ;非线性(网状) 2、没有;1;没有;1 3、前驱;后继;任意多个 4、任意多个 5、一对一;一对多;多对多6、有穷性;确定性;可行性;输入;输出 7、数据元素;逻辑结构;存储结构 8、插入、删除、合并等操作较方便 9、顺序存储;链式存储 四、算法分析题for(i=1; i=n; i+)for(j =1; j =i ; j+)x=x+1;分析:该算法为一个二重循环,执行次数为内、外循环次数相乘,但内循环次数不固定,与外循环有关,因些,时间频度T(n)=1

2、+2+3+n=n*(n+1)/2有 1/4T(n)/n21,故它的时间复杂度为(n2), 即(n)与n2 数量级相同。 2、分析下列算法段的时间频度及时间复杂度 for (i=1;ii+) for (j=1;j=i;j+) for ( k=1;knext=p;p-next=s; (B) s-next=p-next;(C)s-p=s; (D)p-s-5.在一个单链表中,若删除p所指结点的后续结点,则执行( ) (A)p-next- (B)p=p- p-(C)p- (D)p =p-6.下列有关线性表的叙述中,正确的是( ) (A)线性表中的元素之间隔是线性关系 (B)线性表中至少有一个元素 (C)

3、线性表中任何一个元素有且仅有一个直接前趋 (D)线性表中任何一个元素有且仅有一个直接后继 7.线性表是具有n个( )的有限序列(n0)(A)表元素 (B)字符 (C)数据元素 (D)数据项 1.线性表的链接存储,表中元素的逻辑顺序与物理顺序一定相同。2.如果没有提供指针类型的语言,就无法构造链式结构。3.线性结构的特点是只有一个结点没有前驱,只有一个结点没有后继,其余的结点只有一个前驱和后继。4.语句p=p-next完成了指针赋值并使p指针得到了p指针所指后继结点的数据域值。5.要想删除p指针的后继结点,我们应该执行q=p-next ;next=q-next; free(q)。1.已知P为单链

4、表中的非首尾结点,在P结点后插入S结点的语句为:_ 。2.顺序表中逻辑上相邻的元素物理位置( )相邻, 单链表中逻辑上相邻的元素物理位置_相邻。3.线性表L(a1,a2,.,an)采用顺序存储,假定在不同的n1个位置上插入的概率相同,则插入一个新元素平均需要移动的元素个数是_ 4.在非空双向循环链表中,在结点q的前面插入结点p的过程如下:prior=q-prior;q-prior-next=q;_;5.已知L是无表头结点的单链表,是从下列提供的答案中选择合适的语句序列,分别实现:(1)表尾插入s结点的语句序列是_(2) 表尾插入 s结点的语句序列是_1.p-2.p=L;3.L=s;4.p-ne

5、xt=s-5.s-6.s-next=L;7.s-next=null;8.while(p-next!= Q)? p=p-next;9.while(p-=null) p=p-四、算法设计题 1.试编写一个求已知单链表的数据域的平均值的函数(数据域数据类型为整型)。2.已知带有头结点的循环链表中头指针为head,试写出删除并释放数据域值为x的所有结点的c函数。3.某百货公司仓库中有一批电视机,按其价格从低到高的次序构成一个循环链表,每个结点有价格、数量和链指针三个域。现出库(销售)m台价格为h的电视机,试编写算法修改原链表。4.某百货公司仓库中有一批电视机,按其价格从低到高的次序构成一个循环链表,每

6、个结点有价格、数量和链指针三个域。现新到m台价格为h的电视机,试编写算法修改原链表。5.线性表中的元素值按递增有序排列,针对顺序表和循环链表两种不同的存储方式,分别编写C函数删除线性表中值介于a与b(ab)之间的元素。6.设A=(a0,a1,a2,.,an-1),B=(b0,b1,b2,.,bm-1)是两个给定的线性表,它们的结点个数分别是n和m,且结点值均是整数。若n=m,且 ai= bi (0in ),则A=B;若nm ,且ai=bi (0in ),则AB;若存在一个j, jm ,jn ,且ai=bi (0ij ), 若ajbj,则AB。试编写一个比较A和B的C函数,该函数返回 -1或 0

7、或 1,分别表示 A7.试编写算法,删除双向循环链表中第k个结点。8.线性表由前后两部分性质不同的元素组成(a0,a1,.,an-1,b0,b1,.,bm-1),m和n为两部分元素的个数,若线性表分别采用数组和链表两种方式存储,编写算法将两部分元素换位成(b0,b1,.,bm-1,a0,a1,.,an-1),分析两种存储方式下算法的时间和空间复杂度。9.用循环链表作线性表(a0,a1,.,an-1)和(b0,b1,.,bm-1)的存储结构,头指针分别为ah和bh,设计C函数,把两个线性表合并成形如(a0,b0,a1,b1,)的线性表,要求不开辟新的动态空间,利用原来循环链表的结点完成合并操作,

8、结构仍为循环链表,头指针为head,并分析算法的时间复杂度。10.试写出将一个线性表分解为两个带有头结点的循环链表,并将两个循环链表的长度放在各自的头结点的数据域中的C函数。其中,线性表中序号为偶数的元素分解到第一个循环链表中,序号为奇数的元素分解到第二个循环链表中。11.试写出把线性链表改为循环链表的C函数。12.己知非空线性链表中x结点的直接前驱结点为y,试写出删除x结点的C函数。1. B 2.C 3. D 4. B 5. A 6.A 7、C1、2、3、4、5、1、s- 2、一定;不一定 3、n/2 4、q-prior=p; 5、(1)6) 3)(2) 2) 9)1) 7)四、算法设计题1

9、、#include stdio.hmalloc.htypedef struct nodeint 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、int data; /* 假设数据域为整型 */void del_link(NODE *head,int x) /* 删除数据域为x的结点*/NODE *p,*q,*s;q=head-while(q!=hea

10、d)if(q-data=x)p-link=q-s=q;q=q-free(s); elsep=q;3、void del(NODE *head,float price,int num)while(q-priceprice=price)num=q-num-num;else printf(无此产品);num=0)free(q);4、float price;int num;struct node *next;void ins(NODE *head,float price,int num)num+num;s=(NODE *)malloc(sizeof(NODE);price=price;num=num;5

11、、顺序表:算法思想:从0开始扫描线性表,用k记录下元素值在a与b之间的元素个数,对于不满足该条件的元素,前移k个位置,最后修改线性表的长度。void del(elemtype list,int *n,elemtype a,elemtype b) int i=0,k=0;while(i=a&listi /* 假设循环链表带有头结点 */=head & q-dataa)b)r=q;free(r);if(p!=q)link=q;6、#define MAXSIZE 100int listAMAXSIZE,listBMAXSIZE;int n,m;int compare(int a,int b)int

12、i=0;while(ai=bi&n&m)if(n=m&i=n) return(0);if(ni=m) return(1);if(iif(aibi) return(1);7、void del(DUNODE*head,int i)DUNODE *p;if(i=0)*head=*head-*head-prior=NULL;return(0); Elsefor(j=0;i&p!=NULL;j+)p=p-if(p=NULL|ji) return(1);prior=p-proir;free(p);8.顺序存储:void convert(elemtype list,int l,int h) /* 将数组中第

13、l个到第h个元素逆置*/int i;elemtype temp;for(i=h;=(l+h)/2;i+)temp=listi;listi=listl+h-i;listl+h-i=temp;void exchange(elemtype list,int n,int m);convert(list,0,n+m-1);convert(list,0,m-1);convert(list,m,n+m-1);该算法的时间复杂度为O(n+m),空间复杂度为O(1)链接存储:(不带头结点的单链表)elemtype data;void convert(NODE *head,int n,int m)NODE *p,

14、*q,*r;p=*head;q=*head;for(i=0;n-1; /*q指向an-1结点 */r=q-link=NULL;while(r-link!r=r- /*r指向最后一个bm-1结点 */*head=q;r-link=p;该算法的时间复杂度为O(n+m),但比顺序存储节省时间(不需要移动元素,只需改变指针),空间复杂度为O(1)9.NODE*union(NODE*ah,NODE *bh)NODE*a,*b,*head,*r,*q;head=ah;a=ah;b=bh;while(a-=ah&b-=bh)r=a-q=b-a-link=b;link=r;a=r;b=q;if(a-link=

15、ah) /*a的结点个数小于等于b的结点个数 */while(b-b=b-link=head;if(b-link=bh) /*b的结点个数小于a的结点个数 */ return(head);该算法的时间复杂度为O(n+m),其中n和m为两个循环链表的结点个数.10. void analyze(NODE *a) NODE*rh,*qh,*r,*q,*p;int i=0,j=0;/*i为序号是奇数的结点个数 j为序号是偶数的结点个数 */p=a;rh=(NODE *)malloc(sizeof(NODE);/*rh为序号是奇数的链表头指针 */qh=(NODE *)malloc(sizeof(NOD

16、E); /*qh为序号是偶数的链表头指针 */r=rh;q=qh;r=p;q=p;j+;rh-data=i;link=rh;qh-data=j;link=qh;11.void change(NODE*head)NODE*p;if(head!while(p-12.void del(NODE *x,NODE *y)elemtype d1;p=y;q=x;=NULL) /* 把后一个结点数据域前移到前一个结点*/ data=q- /* 删除最后一个结点*/第三章 栈和队列1. 一个栈的入栈序列是a,b,c,d,e,则栈的不可能的输出序列是( )。(A) edcba(B)decba(C)dceab (

17、D)abcde 2.栈结构通常采用的两种存储结构是( )。(A) 线性存储结构和链表存储结构(B)散列方式和索引方式(C)链表存储结构和数组 (D)线性存储结构和非线性存储结构3.判定一个栈ST(最多元素为m0)为空的条件是( )。(A) ST-top!=0 (B)ST-top=0 (C)ST-top!=m0 (D)ST-top=m04.判定一个栈ST(最多元素为m0)为栈满的条件是( )。(A)ST-top!=0 (B)ST-top=0 (C)ST-=m0-1(D)ST-top=m0-15.一个队列的入列序列是1,2,3,4,则队列的输出序列是( )。(A)4,3,2,1(B)1,2,3,4(C)1,4,3,2(D)3,2,4,16.循环队列用数组A0,m-1存放其元素值,已知其头尾指针分别是front和rear则当前队列中的元素个数是( )(A)(rear-front+m)%m (B) rear-front+1 (C)rear-front-1(D)rear-front7.栈和队列的共同点是( )(A) 都是先进后出 (B)都是先进先出(C)只允许在端点处插入和删除元素(D)没有共同点8.表达式a*(b+c)-d的后缀表达式是( )。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1