数据结构习题与答案 联系客服

发布时间 : 星期一 文章数据结构习题与答案更新完毕开始阅读4a06262cb1717fd5360cba1aa8114431b80d8ed4

分析算法,只有一层循环,共执行n-2次,所以,T(n)=O(n)。

学习自测及答案

1.顺序存储结构的特点是( ),链接存储结构的特点是( )。

【解答】用元素在存储器中的相对位置来表示数据元素之间的逻辑关系,用指示元素存储地址的指针表示数据元素之间的逻辑关系。

2. 算法在发生非法操作时可以作出处理的特性称为( )。 【解答】健壮性

3. 常见的算法时间复杂度用大O记号表示为:常数阶( )、对数阶( )、线性阶 ( )、平方阶( )和指数阶( )。 【解答】O(1),O(log2n),O(n),O(n2),O(2n) 4.将下列函数按它们在n 时的无穷大阶数,从小到大排列。

n, n-n3+7n5, nlogn, 2n/2, n3, log2n, n1/2+log2n, (3/2)n, n!, n2+log2n

【解答】log2n, n1/2+log2n, n, nlog2n, n2+log2n, n3, n-n3+7n5, 2n/2, (3/2)n, n! 5.试描述数据结构和抽象数据类型的概念与程序设计语言中数据类型概念的区别。

【解答】数据结构是指相互之间存在一定关系的数据元素的集合。而抽象数据类型是指一个数据结构以及定义在该结构上的一组操作。程序设计语言中的数据类型是一个值的集合和定义在这个值集上一组操作的总称。抽象数据类型可以看成是对数据类型的一种抽象。

6. 对下列用二元组表示的数据结构,试分别画出对应的逻辑结构图,并指出属于何种结构。 ⑴ A=(D,R), 其中D={a1, a2, a3, a4},R={ } ⑵ B=(D,R), 其中D={a, b, c, d, e, f},R={,,,,} ⑶ C=( D,R),其中D={a,b,c,d,e,f},R={,,,,,} ⑷ D=(D,R), 其中D={1, 2, 3, 4, 5, 6},

R={(1, 2),(1, 4),(2, 3),(2, 4),(3, 4),(3, 5),(3, 6),(4, 6)}

【解答】⑴ 属于集合,其逻辑结构图如图1-4(a)所示;⑵ 属于线性结构,其逻辑结构图如图1-4(b)所示;⑶ 属于树结构,其逻辑结构图如图1-4(c)所示;⑷ 属于图结构,其逻辑结构图如图1-4(d)所示。

7. 求下列算法的时间复杂度。 count=0; x=1; while (x { x*=2; count++; }

return count; 【解答】O(log2n)

第 2 章 线性表

课后习题讲解

1. 填空

⑴ 在顺序表中,等概率情况下,插入和删除一个元素平均需移动( )个元素,具体移动元素的个数与( )和( )有关。

【解答】表长的一半,表长,该元素在表中的位置

⑵ 顺序表中第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的存储地址是( )。 【解答】108

【分析】第5个元素的存储地址=第1个元素的存储地址+(5-1)×2=108

⑶ 设单链表中指针p 指向结点A,若要删除A的后继结点(假设A存在后继结点),则需修改指针的操作为( )。

【解答】p->next=(p->next)->next ⑷ 单链表中设置头结点的作用是( )。 【解答】为了运算方便

【分析】例如在插入和删除操作时不必对表头的情况进行特殊处理。

⑸ 非空的单循环链表由头指针head指示,则其尾结点(由指针p所指)满足( )。 【解答】p->next=head 【分析】如图2-8所示。

⑹ 在由尾指针rear指示的单循环链表中,在表尾插入一个结点s的操作序列是( );删除开始结点的操作序列为( )。

【解答】s->next =rear->next; rear->next =s; rear =s; q=rear->next->next; rear->next->next=q->next; delete q; 【分析】操作示意图如图2-9所示:

⑺ 一个具有n个结点的单链表,在指针p所指结点后插入一个新结点的时间复杂度为( );在给定值为x的结点后插入一个新结点的时间复杂度为( )。 【解答】Ο(1),Ο(n)

【分析】在p所指结点后插入一个新结点只需修改指针,所以时间复杂度为Ο(1);而在给定值为x的结点后插入一个新结点需要先查找值为x的结点,所以时间复杂度为Ο(n)。 ⑻ 可由一个尾指针唯一确定的链表有( )、( )、( )。 【解答】循环链表,循环双链表,双链表 2. 选择题

⑴ 线性表的顺序存储结构是一种( )的存储结构,线性表的链接存储结构是一种( )的存储结构。 A 随机存取 B 顺序存取 C 索引存取 D 散列存取 【解答】A,B 【分析】参见2.2.1。

⑵ 线性表采用链接存储时,其地址( )。

A 必须是连续的 B 部分地址必须是连续的 C 一定是不连续的 D 连续与否均可以 【解答】D

【分析】线性表的链接存储是用一组任意的存储单元存储线性表的数据元素,这组存储单元可以连续,也可以不连续,甚至可以零散分布在内存中任意位置。 ⑶ 单循环链表的主要优点是( )。 A 不再需要头指针了

B 从表中任一结点出发都能扫描到整个链表;