数据结构习题答案

上传人:人*** 文档编号:555193081 上传时间:2023-06-09 格式:DOC 页数:45 大小:519.50KB
返回 下载 相关 举报
数据结构习题答案_第1页
第1页 / 共45页
数据结构习题答案_第2页
第2页 / 共45页
数据结构习题答案_第3页
第3页 / 共45页
数据结构习题答案_第4页
第4页 / 共45页
数据结构习题答案_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《数据结构习题答案》由会员分享,可在线阅读,更多相关《数据结构习题答案(45页珍藏版)》请在金锄头文库上搜索。

1、.第1章 绪论习题1简述以下概念:数据、数据元素、数据项、数据对象、数据构造、逻辑构造、存储构造、抽象数据类型。2试举一个数据构造的例子,表达其逻辑构造和存储构造两方面的含义和相互关系。3简述逻辑构造的四种根本关系并画出它们的关系图。4存储构造由哪两种根本的存储方法实现?5选择题1在数据构造中,从逻辑上可以把数据构造分成 。A动态构造和静态构造 B紧凑构造和非紧凑构造C线性构造和非线性构造 D部构造和外部构造2与数据元素本身的形式、容、相对位置、个数无关的是数据的 。A存储构造 B存储实现C逻辑构造 D运算实现3通常要求同一逻辑构造中的所有数据元素具有一样的特性,这意味着 。 A数据具有同一特

2、点B不仅数据元素所包含的数据项的个数要一样,而且对应数据项的类型要一致C每个数据元素都一样D数据元素所包含的数据项的个数要相等4以下说确的是 。A数据元素是数据的最小单位B数据项是数据的根本单位C数据构造是带有构造的各数据项的集合D一些外表上很不一样的数据可以有一样的逻辑构造5以下与数据的存储构造无关的术语是。A顺序队列 B. 链表C.有序表 D. 链栈6以下数据构造中,是非线性数据构造A树 B字符串 C队 D栈6试分析下面各程序段的时间复杂度。1*=90; y=100;while(y0)if(*100)*=*-10;y-;else *+;2for (i=0; in; i+)for (j=0;

3、 jm; j+)aij=0;3s=0;for i=0; in; i+)for(j=0; jn; j+)s+=Bij;sum=s;4i=1; while(i=n) i=i*3;5*=0;for(i=1; in; i+)for (j=1; j1y=0;while(*(y+1)* (y+1) y+;1O12Om*n3On24Olog3n5因为*+共执行了n-1+n-2+1= n(n-1)/2,所以执行时间为On26O()第2章 线性表1选择题1一个向量第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是 。A110 B108C100 D1202在n个结点的顺序表中,算法的时间复杂度

4、是O(1)的操作是 。A访问第i个结点1in和求第i个结点的直接前驱2in B在第i个结点后插入一个新结点1inC删除第i个结点1inD将n个结点从小到大排序3向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动 的元素个数为 。A8 B63.5C63 D74存储的存储构造所占存储空间 。A分两局部,一局部存放结点值,另一局部存放表示结点间关系的指针B只有一局部,存放结点值C只有一局部,存储表示结点间关系的指针D分两局部,一局部存放结点值,另一局部存放结点所占单元数5线性表假设采用链式存储构造时,要求存中可用存储单元的地址 。A必须是连续的 B局部地址必须是连续的C一定是

5、不连续的 D连续或不连续都可以6线性表在 情况下适用于使用链式构造实现。A需经常修改中的结点值 需不断对进展删除插入 C中含有大量的结点 中结点构造复杂7单链表的存储密度 。A大于1 B等于1 C小于1 D不能确定8将两个各有n个元素的有序表归并成一个有序表,其最少的比拟次数是 。An B2n-1 C2n Dn-19在一个长度为n的顺序表中,在第i个元素1in+1之前插入一个新元素时须向后移动 个元素。An-i Bn-i+1 Cn-i-1 Di(10) 线性表L=(a1,a2,an),以下说确的是 。A每个元素都有一个直接前驱和一个直接后继B线性表中至少有一个元素C表中诸元素的排列必须是由小到

6、大或由大到小D除第一个和最后一个元素外,其余每个元素都有一个且仅有一个直接前驱和直接后继。(11) 假设指定有n个元素的向量,则建立一个有序单链表的时间复杂性的量级是 。AO(1) BO(n) CO(n2) DO(nlog2n)(12) 以下说法错误的选项是 。A求表长、定位这两种运算在采用顺序存储构造时实现的效率不比采用链式存储构造时实现的效率低B顺序存储的线性表可以随机存取C由于顺序存储要求连续的存储区域,所以在存储管理上不够灵活D线性表的链式存储构造优于顺序存储构造(13) 在单链表中,要将s所指结点插入到p所指结点之后,其语句应为 。As-ne*t=p+1;p-ne*t=s;B(*p)

7、.ne*t=s;(*s).ne*t=(*p).ne*t;Cs-ne*t=p-ne*t;p-ne*t=s-ne*t;Ds-ne*t=p-ne*t;p-ne*t=s; (14) 在双向链表存储构造中,删除p所指的结点时须修改指针 。Ap-ne*t-prior=p-prior;p-prior-ne*t=p-ne*t;Bp-ne*t=p-ne*t-ne*t;p-ne*t-prior=p;Cp-prior-ne*t=p;p-prior=p-prior-prior;Dp-prior=p-ne*t-ne*t;p-ne*t=p-prior-prior;(15) 在双向循环链表中,在p指针所指的结点后插入q所指

8、向的新结点,其修改指针的操作是 。Ap-ne*t=q; q-prior=p;p-ne*t-prior=q;q-ne*t=q;Bp-ne*t=q;p-ne*t-prior=q;q-prior=p;q-ne*t=p-ne*t;Cq-prior=p;q-ne*t=p-ne*t;p-ne*t-prior=q;p-ne*t=q;Dq-prior=p;q-ne*t=p-ne*t;p-ne*t=q;p-ne*t-prior=q;2算法设计题1将两个递增的有序链表合并为一个递增的有序链表。要求结果链表仍使用原来两个链表的存储空间, 不另外占用其它的存储空间。表中不允许有重复的数据。void MergeList

9、_L(LinkList &La,LinkList &Lb,LinkList &Lc)pa=La-ne*t; pb=Lb-ne*t; Lc=pc=La; /用La的头结点作为Lc的头结点 while(pa & pb) if(pa-datadata) pc-ne*t=pa;pc=pa;pa=pa-ne*t; else if(pa-datapb-data) pc-ne*t=pb; pc=pb; pb=pb-ne*t; else / 相等时取La的元素,删除Lb的元素 pc-ne*t=pa;pc=pa;pa=pa-ne*t; q=pb-ne*t;delete pb ;pb =q; pc-ne*t=pa

10、pa:pb; /插入剩余段 delete Lb; /释放Lb的头结点 2将两个非递减的有序链表合并为一个非递增的有序链表。要求结果链表仍使用原来两个链表的存储空间, 不另外占用其它的存储空间。表中允许有重复的数据。void union(LinkList& La, LinkList& Lb, LinkList& Lc, ) pa = La-ne*t; pb = Lb-ne*t; / 初始化 Lc=pc=La; /用La的头结点作为Lc的头结点 Lc-ne*t = NULL; while ( pa | pb ) if ( !pa ) q = pb; pb = pb-ne*t; else if (

11、!pb ) q = pa; pa = pa-ne*t; else if (pa-data data ) q = pa; pa = pa-ne*t; else q = pb; pb = pb-ne*t; q-ne*t = Lc-ne*t; Lc-ne*t = q; / 插入 delete Lb; /释放Lb的头结点 3两个链表A和B分别表示两个集合,其元素递增排列。请设计算法求出A与B的交集,并存放于A链表中。void Mi*(LinkList& La, LinkList& Lb, LinkList& Lc, ) pa=la-ne*t;pb=lb-ne*t;设工作指针pa和pb;Lc=pc=La

12、; /用La的头结点作为Lc的头结点while(pa&pb) if(pa-data=pb-data)交集并入结果表中。 pc-ne*t=pa;pc=pa;pa=pa-ne*t; u=pb;pb=pb-ne*t; delete u;elseif(pa-datadata) u=pa;pa=pa-ne*t; delete u;else u=pb; pb=pb-ne*t; delete u;while(pa) u=pa; pa=pa-ne*t; delete u; 释放结点空间while(pb) u=pb; pb=pb-ne*t; delete u;释放结点空间pc-ne*t=null;置链表尾标记。delete Lb; 注: 本算法中也可对B表不作释放空间的处理4两个链表A和B分别表示两个集合,其元素递增排列。请设计算法求出两个集合A和B 的差集即仅由在A中出现而不在B中出现的元素所构成的集合,并以同样的形式存储,同时返回该集合的元素个数。void DifferenceLinkedList A,B,*nA和B均是带头结点的递增有序的单链表,分别存储了一个集合,本算法求两集合的差集,存储于单链表A中,*n是结果集合中元素个数,调用时为0p=A-ne

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号