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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

《数据结构》课后参考答案.docx

1、数据结构课后参考答案单元练习11.判断题(下列各题,正确的请在前面的括号打J;错误的打X )(V)(I)数据的逻辑结构与数据元素本身的容和形式无关。(J )(2)个数据结构是由一个逻辑结构和这个逻辑结构上的一个基本运算集构成的整体。(乂)(3)数据元素是数据的最小单位。(X) (4)数据的逻辑结构和数据的存储结构是相同的。(乂)(5)程序和算法原则上没有区别,所以在讨论数据结构时可以通用。(V) (6)从逻辑关系上讲,数据结构主要分为线性结构和非线性结构两类。(V) (7)数据的存储结构是数据的逻辑结构的存储映像。(V) (8)数据的物理结构是指数据在计算机实际的存储形式。(X) (9)数据的

2、逻辑结构是依赖于计算机的。(V) (10)算法是对解题方法和步骤的描述。2.填空题(1) 数据有逻辑结构和 存储结构 两种结构。(2) 数据逻辑结构除了集合以外,还包括:线性结构、树形结构和 图形结构。(3) 数据结构按逻辑结构可分为两大类,它们是线性结构和非线性结构 。(4) 树形结构 和 图形结构 合称为非线性结构。(5) 在树形结构中,除了树根结点以外,其余每个结点只有 1 个前趋结点。(6) 在图形结构中,每个结点的前趋结点数和后续结点数可以 任意多个 。(7) 数据的存储结构又叫物理结构。(8) 数据的存储结构形式包括:顺序存储、链式存储、索引存储和 散列存储 。(9) 线性结构中的

3、元素之间存在 一对一 的关系。(10) 树形结构结构中的元素之间存在一对多 的关系,(11) 图形结构的元素之间存在 多对多 的关系。(12) 数据结构主要研究数据的逻辑结构、存储结构和 算法(或运算)三个方面的容。(13) 数据结构被定义为(D, R),其中D是数据的有限集合,R是D上的 关系 的有 限集合。(14) 算法是一个 有穷指令 的集合。(15) 算法效率的度量可以分为事先估算法和事后统计法 。(16) 一个算法的时间复杂性是算法输入规模的函数。(17) 算法的空间复杂度是指该算法所耗费的 存储空间,它是该算法求解问题规模n 的函数。(18) 若一个算法中的语句频度之和为T (n)

4、 =6n+3nlog2n,则算法的时间复杂度为_Q(nlogjn) o(19) 若一个算法中的语句频度之和为T (n) =3n+nlog2n+n2,则算法的时间复杂度为(n2) o(20)数据结构是一门研究非数值计算的程序设计问题中计算机的 操作对象,以及 它们之间的关系和运算的学科。3.选择题(1) 数据结构通常是研究数据的(A )及它们之间的相互联系。A.存储结构和逻辑结构 B.存储和抽象 C.联系和抽象 D.联系与逻辑(2) 在逻辑上可以把数据结构分成:(C )。A.动态结构和靜态结构 B.紧凑结构和非紧凑结构C.线性结构和非线性结构 D.部结构和外部结构(3) 数据在计算机存储器表示时

5、,物理地址和逻辑地址相同并且是连续的,称之为(C )。A.存储结构 B.逻辑结构 C.顺序存储结构 D.链式存储结构(4) 非线性结构中的每个结点(D )。A.无直接前趋结点B.无直接后继结点C.只有一个直接前趋结点和一个直接后继结点D.可能有多个直接前趋结点和多个直接后继结点(5) 钱式存储的存储结构所占存储空间(A )。A.分两部分,一部分存放结点的值,另一部分存放表示结点间关系的指针B.只有一部分,存放结点的值C.只有一部分,存储表示结点间关系的指针D.分两部分,一部分存放结点的值,另一部分存放结点所占单元素(9)每一个存储结点不仅含有一个数据元素, 储方式。A.顺序还包含一组指针,该存

6、储方式是(B )存C.(10)以下任何两个结点之间都没有逻辑关系的是( A.图形结构B.链式B.线性结构 C.(11)在数据结构中,与所使用的计算机无关的是(B.存储结构 C.索引 D )。树形结构 C )。逻辑结构D.散列D.集合A.物理结构 储结构(12) 下列四种基本逻辑结构中,数据元素之间关系最弱的是(AA.集合 B.线性结构 C.树形结构(13) 与数据元素本身的形式、容、相对位置、个数无关的是数据的(A.逻辑结构 B.存储结构 C.逻辑实现)oD.D.)。D.逻辑和存图形结构存储实现(14)每一个存储结点只含有一个数据元素,存储结点存放在连续的存储空间,另外有一组(6)算法的计算量

7、大小称为算法的(C )。C.时间复杂性D.效率A.现实性B.难度(7)数据的基本单位是(B )。A.数据结构B.数据元素C.数据项D.文件(8)每个结点只含有一个数据元素,所有存储结点相继存放在一个连续的存储区里,这种 存储结构称为(A )结构。A.顺序存储 B.链式存储 C.索引存储 D.散列存储指明结点存储位置的表,该存储方式是(C )存储方式。A.顺序 B.链式 C.索引 D.散列(15) 算法能正确的实现预定功能的特性称为算法的(A )。A.正确性 B.易读性 C.健壮性 D.高效性(16) 算法在发生非法操作时可以作出处理的特性称为算法的(C )。A.正确性 B.易读性C.健壮性D.

8、高效性(17)下列时间复杂度中最坏的是(D )0A. 0(1) B. 0 ( n)C.0 (log2n )D. 0 (n2)(18)下列算法的时间复杂度是(D )。for (i=0;in;i+)for (j=0;in;j+)cij=i+j;A. 0(1) B. 0 ( n)C0 (log2n)D. 0 (n2)(19)算法分析的两个主要方面是(A )0A.空间复杂性和时间复杂性B.正确性和简明性C.可读性和文档性D.数据复杂性和程序复杂性(20)计算机算法必须具备输入、输出和(C)oA.计算方法B.排序方法C.解决问題的有限运算步骤D.程序设计方法四分析下面各程序段的时间复杂度(1)for (

9、i二0;in;i+)for (j二0;jm;j+)Aij解:0(n*m)(2)s 二 0;for (i二0;in;i+)for (j=0; jn; j+) s+=Bij;sum二s;解:0(n2)(3)T二 A;A=B;B=T;解:o(4)si (int n) int p=lts=0;for (i=l;i=n;i+) p*=i;s+=p; return (s);0(n)(5)s2(int n)x 二0;y 二0;for (k=l;k=n;k+)x+;for (i=l;i=n;i+) for (j=l;j e,R= 解: ao 6c d eo 0属于集合(2)B= (D.R),其中:D=a,b,

10、ctdte,f, R=rR=, , (尖括号表示结点之间关系是有向的)解:(DKD_KDKD属于线性结构。(3)F= (D,R),其中:D二50,25.64,57,82.36.75.55, R=r)R=, ft, , . , 解:属于树结构。单元练习21.判断题(下列各题,正确的请在前面的括号打错误的打X)(X) (1)线性表的链式存储结构优于顺序存储。(X) (2)链表的每个结点都恰好包含一个指针域。(7)(3)在线性表的链式存储结构中,逻辑上相邻的两个元素在物理位置上并不一定紧邻。(X) (4)顺序存储方式的优点是存储密度大,插入、删除效率高。(X) (5)线性链表的删除算法简单,因为当删

11、除链中某个结点后,计算机会自动地将后续 的各个单元向前移动。(X)(6)顺序表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。(V) (7)线性表链式存储的特点是可以用一组任意的存储单元存储表中的数据元素。(V) (8)线性表采用顺序存储,必须占用一片连续的存储单元。(X) (9)顺序表结构适宜于进行顺序存取,而链表适宜于进行随机存取。(X) (10)插入和删除操作是数据结构中最基本的两种操作,所以这两种操作在数组中也 经常使用。2.填空题(1) 顺序表中逻辑上相邻的元素在物理位置上 必须 相连。(2) 线性表中结点的集合是有限的,结点间的关系是 一对一 关系。(3) 顺序表

12、相对于链表的优点是: 节省存储和随机存取。(4) 链表相对于顺序表的优点是: 插入、删除方便。(5) 采用 顺序存储结构的线性表叫顺序表。(6) 顺序表中访问任意一个结点的时间复杂度均为 0仃)。(7) 链表相对于顺序表的优点是插入、删除方便;缺点是存储密度 小 。(8) 在双链表中要删除已知结点*P,其时间复杂度为 0(1) 。(9) 在单链表中要在已知结点*P之前插入一个新结点,需找到科的直接前趋结点的地址,其查找的时间复杂度为 O(n)。(10) 单链表中需知道头指针才能遍历整个链表。(11) 性表中第一个结点没有直接前趋,称为开始结点。(12) 在一个长度为n的顺序表中删除第i个元素,

13、要移动 n-i 个元素。(13) 在一个长度为n的顺序表中,如果要在第i个元素前插入一个元素,要后移n-i+1 个元素。(14) 在无头结点的单链表中,第一个结点的地址存放在头指针中,而其它结点的存储地址存放在前趋 结点的指针域中。(15) 当线性表的元素总数基本稳定,且很少进行插入和删除操作,但要求以最快速度存 取线性表中的元素时,应采用顺序存储结构。(16) 在线性表的链式存储中,元素之间的逻辑关系是通过指针决定的。(17) 在双向链表中,每个结点都有两个指针域,它们一个指向其 前趋 结点,另一个指向其_后继结点。(18) 对一个需要经常进行插入和删除操作的线性表,采庠 维式存储结构为宜。

14、(19) 双钱表中,设p是指向其中待删除的结点,则需要执行的操作为: p-prior-next=p-next 。(20) 在如图所示的链表中,若在指针P所在的结点之后插入数据域值为a和b的两 个结点,则可用下列两个语句:S-next-next=P-next; 和P-next=S; 来实现该操作。3.选择题(1) 在具有n个结点的单链表中,实现(A.遍历链表或求链表的第i个结点C.删除开始结点)的操作,其算法的时间复杂度都是0 5)。B.在地址为P的结点之后插入一个结点 D.删除地址为P的结点的后继结点(2) 设a、b、c为三个结点,p、10、20分别代表它们的地址,则如下的存储结构称为(B )

15、。10A.循环链表 B.单链表(3) 单钱表的存储密度(C )。A.大于1 B.等于1C.双向循环链表D.双向链表C.小于1D.不能确定(4) 已知一个顺序存储的线性表,设每个结点占m个存储单元,若第一个结点的地址为B, 则第i个结点的地址为(A )。A.D. B+(i + l) *mB )oD. 0 (log2n)B+(iT)*m B. B+i*m C. B-i*m(5) 在有n个结点的顺序表上做插入、删除结点运算的时间复杂度为(2.A 0 (1) B 0 (n) C. 0 (F)P= NULLD. P-Rlink=L(6) 设Llink, Rlink分别为循环双钱表结点的左指针和右指针,则

16、指针P所指的元素是双 循环链表L的尾元素的条件是(D )。A. P= L B. P-Llink=L C.(7) 两个指针P和Q,分别指向单链表的两个元素,P所指元素是Q所指元素前驱的条件 是(B )。A. P-next=Q-next B. P-next= Q C. Q-next= P D. P= Q(8) 用钱表存储的线性表,其优点是(C )。A.便于随机存取 B.花费的存储空间比顺序表少C.便于插入和删除 D.数据元素的物理顺序与逻辑顺序相同(9)在单链表中,增加头结点的目的是(C )。A.使单链表至少有一个结点C.方便运算的实现结构(10)下面关于线性表的叙述中,错误的是(A.顺序表必须占

17、一片地址连续的存储单元C.链表不必占用一片地址连续的存储单元B.标志表中首结点的位置D.说明该单链表是线性表的链式存储D )关系。B.顺序表可以随机存取任一元素D.链表可以随机存取任一元素(11) L 是线性表,已知 LengthList (L)的值是 5,经 DelList (L, 2)运算后 LengthList (L)的值是(C )。A. 2 B. 3 C. 4 D. 5(12) 单链表的示意图如下:L指向链表Q结点的前趋的指针是(B )。A. L B P C. Q D R(13) 设p为指向单循环钱表上某结点的指针,则*p的直接前驱(C )。A.找不到 B.查找时间复杂度为0(1)C.

18、查找时间复杂度为0 (n) D.查找结点的次数约为n(14) 等概率情况下,在有n个结点的顺序表上做插入结点运算,需平均移动结点的数目为 (C )。A. nC. n/2(15)在下列链表中不能从当前结点出发访问到其余各结点的是(A.双向链表B.单循环链表 C.单链表D. (n+l)/2C )。D.双向循环链表(16)在顺序表中,只要知道(D ),就可以求出任一结点的存储地址。A.基地址B.结点大小C.向量大小 D.基地址和结点大小(17)在双链表中做插入运算的时间复杂度为(A )。A. 0 (1)B. 0 (n)C. 0 (n2)(18) 链表不具备的特点是(A )。A.随机访问C.插入删除时

19、不需移动元素(19) 以下关于线性表的论述.不正确的为(D. 0 (logm)B.不必事先估计存储空间D.所需空间与线性表成正比C )。A.线性表中的元素可以是数字、字符.记录等不同类型B.线性顺序表中包含的元素个数不是任意的C.线性表中的每个结点都有且仅有一个直接前趋和一个直接后继D.存在这样的线性表,即表中没有任何结点(20)在(B )的运算中,使用顺序表比链表好。A.插入 B.根据序号查找 C.删除 D.根据元素查找4.分析下述算法的功能(1)ListNodc *Demol(LinkList L.ListNode *p) L是有头结点的单链表ListNode *q=L-next;Whil

20、e (q & qi】cxt!=p)q=q-next;if(q)return q;elseError( “*p not in LM );(2)void Demo2(ListNode *p,ListNode *q) /p,*q是链表中的两个结点DataT-pe temp;temp=p-data;p-data=q-data:q-data=temp;解:(1)返回结点和的直接前趋结点地址。(2)交换结点和和结点*q (p和q的值不变)。5.程序填空(1)已知线性表中的元素是无序的,并以带表头结点的单链表作存储。试写一算法,删除 表中所有大于min,小于max的元素,试完成下列程序填空。Void del

21、ete (lklist head; datatype min, max) q=head-next;while (p!二NULL) if (p-datadst3二!nax )(q=p; p- p-next ; else q-next= p-next ;delete (p)p= q-next ; (2)在带头结点head的单链表的结点a之后插入新元素x,试完成下列程序填空。struct node elemtype data;node 水next;;void lkinsert (node *head, elemtype x) node *s, *p;s= new node ;s-data= x ;p

22、=head-next;while (p!=NULL) & ( p-data!=a ) p二p_next ;if (p=NULL)cout H不存在结点a!;else s-next二p-next ;p-next 二 s;6.算法设计题(1)写一个对单循环链表进行遍历(打印每个结点的值)的算法,已知链表中任意结点的 地址为P。解:void Show(ListNode *P) ListNode *t=P;do printf(%cM,t-data):t=t-rear;while (t 1 =P):(2)对绐定的带头结点的单链表L,编写一个删除L中值为x的结点的直接前趋结点的 算法。解:void del

23、ete(ListNode *L) ListNode *p=L.*q;if (L-next-dataX)printf(“值为x的结点是第一个结点,没有直接前趋结点可以删除” return;For (p-next-data!=X; q=p; p=p-next): / 删除指针 p 所指向的结点 q-next=p-next;delete p;(3)已知一个单向链表,编写一个函数从单链表中删除自第i个结点起的k个结点。解:void Del(node *head,int i,int k)node *p.*q;int j;/删除前k个元素/ p指向要删除的结点/ p指向要刪除的结点的前一个结点/ q指向要

24、删除的结点if(i=l)for(j=l;jnext ; delete p;elsep=head;for(j=l; jUi-2; j+) p=p-next;for(j=l;jnext; p-next=q-next ; delete q;(4)有一个单向链表(不同结点的数据域值可能相同),其头指针为head,编写一个函 数计算值域为X的结点个数。解:本题是遍历单链表的每个结点,每遇到一个结点,结点个数加1,结点个数存储在变 量n中。实现本題功能的函数如下:int counter(head)node *head; node *p;int n二0;p=head;while(p!=NULL) if(p-

25、data=x)n+;p=p-next;return(n);(5有两个循环单向链表,链头指针分别为headl和head2,编写一个函数将链表headl 到链表head2,后的链表仍是循环链表。解:/本题的算法思想是:先找到两链表的尾指针,将第一个链表的尾指针与第二个链表的 头结点起来,使之成为循环的。函数如下:node *1 ink (node *headlt *head2) node 水p*q;p=headl:while(p-next!=head1)p=p-next;q=head2;while (q-next!=head2)q二q-next;p-next=head2;q-next=headl;

26、return (headl);单元练习31.判断题(下列各题,正确的请在前面的括号打错误的打X)(7)(1)栈是运算受限制的线性表。(V) (2)在栈空的情况下,不能作出栈操作,否则产生下溢出。(X) (3)栈一定是顺序存储的线性结构。(V) (4)栈的特点是“后进先出。(next-t,op:和 top=p;操作。(8) 顺序栈S存储在数组S-data0. .MAXLEN-1中,进栈操作时要执行的语句有:S-top + 。(或=S-top+l)(9) 链栈LS,指向栈顶元素的指针是 LS-next 。(10) 从一个栈删除元素时,首先取出栈顶元素然后再移动栈顶指针。(11) 由于链栈的操作只在链表的头部进行,所以没有必要设置 头 结点。(12) 已知顺序栈S,在对S进行进栈操作之前首先要判断 栈是介满。(13) 已知顺序栈S,在对S进行出栈操作之前首先要判断 栈是否空。(14) 若存空间充足, 链 栈可以不定义栈满运算。(15) 链栈LS是空的条件是 LS-next=NULL 。(16) 链栈LS的栈

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

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