数据结构 严蔚敏 清华大学出版社 习题及答案

合集下载

严蔚敏数据结构课后习题及答案解析

严蔚敏数据结构课后习题及答案解析

严蔚敏数据结构课后习题及答案解析数据结构课程是计算机科学与技术专业中非常重要的一门基础课程,对于学习者来说,课后习题的巩固和答案解析是学习的重要辅助材料。本文将针对严蔚敏老师所著的《数据结构(C语言版)》中的课后习

题及答案解析进行介绍和总结。

1. 第一章:绪论

(略)

2. 第二章:线性表

(略)

3. 第三章:栈和队列

3.1 课后习题

3.1.1 课后习题一:

给定一个整数序列,请设计一个算法,其中删除整数序列中重复出

现的元素,使得每个元素只出现一次。要求空间复杂度为O(1)。

3.1.2 课后习题二:

使用栈操作实现一个队列(其中队列操作包括入队列和出队列)。

3.2 答案解析

3.2.1 答案解析一:

我们可以使用双指针法来实现这一算法。设定两个指针,一个指向

当前元素,另一个指向当前元素的下一个元素。比较两个元素是否相等,如果相等,则删除下一个元素,并移动指针。如果不相等,则继

续移动指针。这样,当指针指向序列的最后一个元素时,算法结束。

空间复杂度为O(1),时间复杂度为O(n)。

3.2.2 答案解析二:

使用两个栈来实现一个队列。一个栈用于入队列操作,另一个栈用

于出队列操作。当需要入队列时,将元素直接入栈1。当需要出队列时,判断栈2是否为空,如果为空,则将栈1中的元素逐个弹出并压入栈2中,然后从栈2中弹出栈顶元素。如果栈2非空,则直接从栈2中弹出栈顶元素。这样,就可以实现使用栈操作来实现队列操作。

4. 第四章:串

(略)

5. 第五章:数组和广义表

(略)

6. 第六章:树和二叉树

(略)

7. 第七章:图

(略)

严蔚敏版数据结构习题及参考答案

严蔚敏版数据结构习题及参考答案

习题1

一、单项选择题

A1.数据结构是指()。

A.数据元素的组织形式

B.数据类型

C.数据存储结构

D.数据定义

C2.数据在计算机存储器内表示时,物理地址与逻辑地址不相同的,称之为()。

A.存储结构

B.逻辑结构

C.链式存储结构

D.顺序存储结构

D3.树形结构是数据元素之间存在一种()。

A.一对一关系

B.多对多关系

C.多对一关系

D.一对多关系

B4.设语句x++的时间是单位时间,则以下语句的时间复杂度为()。

for(i=1; i<=n; i++)

for(j=i; j<=n; j++)

x++;

A.O(1)

B.O(2n)

C.O(n)

D.O(3n)

CA5.算法分析的目的是(1),算法分析的两个主要方面是(2)。

(1) A.找出数据结构的合理性 B.研究算法中的输入和输出关系

C.分析算法的效率以求改进

D.分析算法的易懂性和文档性

(2) A.空间复杂度和时间复杂度 B.正确性和简明性

C.可读性和文档性

D.数据复杂性和程序复杂性

6.计算机算法指的是(1),它具备输入,输出和(2)等五个特性。

(1) A.计算方法 B.排序方法

C.解决问题的有限运算序列

D.调度方法

(2) A.可行性,可移植性和可扩充性 B.可行性,确定性和有穷性

C.确定性,有穷性和稳定性

D.易读性,稳定性和安全性

7.数据在计算机内有链式和顺序两种存储方式,在存储空间使用的灵活性上,链式存储比顺序存储要()。

A.低

B.高

C.相同

D.不好说

8.数据结构作为一门独立的课程出现是在()年。

A.1946

B.1953

C.1964

D.1968

数据结构第2版习题答案—严蔚敏

数据结构第2版习题答案—严蔚敏

)。

第2章线性表

1 .选择题

(1)顺序表中 第一个 元素的存储 地址是100,每个元素的 长度为2,则第5个元素的 地址是( )。

A . 110 答案:

B 解释:顺序表中的数据连续存储,所以第

D . 120 5个元素的地址为: 100+2*4=108。

(3)向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移 动的元

素个数为( )。 C . 63 A . 8 B . 答案:B 解释:平均要移动的元素个数为: (4) 链接存储的存储结构所占存储空间(

n/2。 )。 A .分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针 B .只有一部分,存放结点值

C .只有一部分,存储表示结点间关系的指针

D .分两部分,一部分存放结点值,另一部分存放结点所占单元数

答案:A

(5) 线性表若采用链式存储结构时,要求内存中可用存储单元的地址(

A .必须是连续的

C . 一定是不连续的

答案:D

(6) 线性表1在( B •部分地址必须是连续的

D •连续或不连续都可以

)情况下适用于使用链式结构实现。

B.需不断对L 进行删除插入 D.L 中结点结构复杂

A .需经常修改L 中的结点值

C . L

中含有大量的结点

答案:B

解释:链表最大的优点在于插入和删除时不需要移动数据,直接修改指针即可。

(7) 单链表的存储密度( )。 A .大于1 B .等于1

答案:C 解释:存储密度是指一个结点数据本身所占的存储空间和整个结点所占的存储空

间之比,假设单链表一个结点本身所占的空间为 D ,指针域所占的空间为 N ,则存储密

数据结构(C语言版)清华大学出版社 严蔚敏 吴伟民

数据结构(C语言版)清华大学出版社 严蔚敏 吴伟民

吉首大学题库

一、一、单选题(每题 2 分,共20分)

1. 1.对一个算法的评价,不包括如下()方面的内容。

A.健壮性和可读性B.并行性C.正确性D.时空复杂度

2. 2.在带有头结点的单链表HL中,要向表头插入一个由指针p指向的结

点,则执行( )。

A. p->next=HL->next; HL->next=p;

B. p->next=HL; HL=p;

C. p->next=HL; p=HL;

D. HL=p; p->next=HL;

3. 3.对线性表,在下列哪种情况下应当采用链表表示?( )

A.经常需要随机地存取元素

B.经常需要进行插入和删除操作

C.表中元素需要占据一片连续的存储空间

D.表中元素的个数不变

4. 4.一个栈的输入序列为1 2 3,则下列序列中不可能是栈的输出序列的是

( )

A. 2 3 1

B. 3 2 1

C. 3 1 2

D. 1 2 3

5. 5.AOV网是一种()。

A.有向图B.无向图C.无向无环图D.有向无环图

6. 6.采用开放定址法处理散列表的冲突时,其平均查找长度()。

A.低于链接法处理冲突 B. 高于链接法处理冲突

C.与链接法处理冲突相同D.高于二分查找

7.7.若需要利用形参直接访问实参时,应将形参变量说明为()参数。

A.值B.函数C.指针D.引用

8.8.在稀疏矩阵的带行指针向量的链接存储中,每个单链表中的结点都具

有相同的()。

A.行号B.列号C.元素值D.非零元素个数

9.9.快速排序在最坏情况下的时间复杂度为()。

A.O(log2n) B.O(nlog2n) C.0(n) D.0(n2)

数据结构习题及答案

数据结构习题及答案

第一章概论

一、填空题

1. 数据结构是一门研究非数值计算的程序设计问题中计算机的 操作对象 以及它们之间的 关系 和运算等的学科。

2. 数据结构被形式地定义为(D, R ),其中D 是 数据元素 的有限集合,R 是D 上的 关系 有限集合。

3. 数据结构包括数据的 逻辑结构 、数据的 存储结构 和数据的 运算 这三个方面的内容。

4. 数据结构按逻辑结构可分为两大类,它们分别是 线性结构 和 非线性结构 。

5. 线性结构中元素之间存在一对一关系,树形结构中元素之间存在一对多关系,图形结构中元素之间存在多对多关系。

6. 在线性结构中,第一个结点 没有 前驱结点,其余每个结点有且只有 1个前驱结点;最后一个结点 没有后续结点,其余每个结点有且只有1个后续结点。

7. 在树形结构中,树根结点没有 前驱 结点,其余每个结点有且只有 1 个前驱结点;叶子结点没有 后续 结点,其余每个结点的后续结点数可以任意多个 。

8. 在图形结构中,每个结点的前驱结点数和后续结点数可以 任意多个 。

9.数据的存储结构可用四种基本的存储方法表示,它们分别是顺序 、 链式 、 索引 和 散列 。

10. 数据的运算最常用的有5种,它们分别是插入 、 删除、修改、 查找 、排序。

11. 一个算法的效率可分为 时间 效率和 空间 效率。

二、单项选择题

( B )1. 非线性结构是数据元素之间存在一种:

A )一对多关系

B )多对多关系

C )多对一关系

D )一对一关系

( C )2. 数据结构中,与所使用的计算机无关的是数据的 结构;

严蔚敏++数据结构习题集答案

严蔚敏++数据结构习题集答案

第二章习题与解答

一判断题

1.线性表的逻辑顺序与存储顺序总是一致的。

2.顺序存储的线性表可以按序号随机存取。

3.顺序表的插入和删除操作不需要付出很大的时间代价,因为每次操作平均只有近一半的元素需要移动。

4.线性表中的元素可以是各种各样的,但同一线性表中的数据元素具有相同的特性,因此是属于同一数据对象。

5.在线性表的顺序存储结构中,逻辑上相邻的两个元素在物理位置上并不一定紧邻。6.在线性表的链式存储结构中,逻辑上相邻的元素在物理位置上不一定相邻。

7.线性表的链式存储结构优于顺序存储结构。

8.在线性表的顺序存储结构中,插入和删除时,移动元素的个数与该元素的位置有关。9.线性表的链式存储结构是用一组任意的存储单元来存储线性表中数据元素的。

10.在单链表中,要取得某个元素,只要知道该元素的指针即可,因此,单链表是随机存取的存储结构。

二单选题 (请从下列A,B,C,D选项中选择一项)

1.线性表是( ) 。

(A) 一个有限序列,可以为空;(B) 一个有限序列,不能为空;

(C) 一个无限序列,可以为空;(D) 一个无序序列,不能为空。

2.对顺序存储的线性表,设其长度为n,在任何位置上插入或删除操作都是等概率的。插入一个元素时平均要移动表中的()个元素。

(A) n/2 (B) n+1/2 (C) n -1/2 (D) n

3.线性表采用链式存储时,其地址( ) 。

(A) 必须是连续的;(B) 部分地址必须是连续的;

(C) 一定是不连续的;(D) 连续与否均可以。

4.用链表表示线性表的优点是()。

(A)便于随机存取

【课后习题及答案】严蔚敏-数据结构课后习题及答案解析

【课后习题及答案】严蔚敏-数据结构课后习题及答案解析
四、算法分析题 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、前驱;1;后继;任意多个 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+3+…+n=n*(n+1)/2 有 1/4≤T(n)/n2≤1,故它的时间复杂度为O(n2), 即T(n)与 n2 数 量级相同。 2、分析下列算法段的时间频度及时间复杂度 for (i=1;i<=n;i++) for (j=1;j<=i;j++) for ( k=1;k<=j;k++) x=i+j-k; 分析算法规律可知时间频度 T(n)=1+(1+2)+(1+2+3)+...+(1+2+3+…+n) 由于有 1/6 ≤ T(n)/ n3 ≤1,故时间复杂度为O(n3)

数据结构(C语言版)严蔚敏课后习题答案

数据结构(C语言版)严蔚敏课后习题答案

数据结构(C语言版)严蔚敏课后习题答案数据结构(C语言版)严蔚敏课后习题答案

一、线性表

1. 顺序表

顺序表是一种存储结构,它将元素顺序存放在一块连续的存储区域中。C语言中常用数组来实现顺序表。以下是一些常见题目的解答:题目1:已知顺序表中存储了n个整数,请编写一个算法,将这个顺序表中的所有负数挑选出来,并将它们按照原有顺序存放在新的顺序表中。

解答:

```

#include <stdio.h>

#define MAX_SIZE 100

int main() {

int A[MAX_SIZE], neg[MAX_SIZE];

int n, i, j = 0;

printf("Enter the number of elements: ");

scanf("%d", &n);

printf("Enter the elements: ");

for (i = 0; i < n; i++) {

scanf("%d", &A[i]);

if (A[i] < 0) {

neg[j] = A[i];

j++;

}

}

printf("Negative numbers: ");

for (i = 0; i < j; i++) {

printf("%d ", neg[i]);

}

return 0;

}

```

题目2:假设顺序表A和B中的元素递增有序排列,编写一个算法合并这两个顺序表,并使合并后的顺序表仍然递增有序。

解答:

```

#include <stdio.h>

#define MAX_SIZE 100

int main() {

数据结构,清华大学出版社,严蔚敏吴伟民编著

数据结构,清华大学出版社,严蔚敏吴伟民编著

第一章绪论

1、数据结构就是计算机中存储、组织数据的方式。精心选择的数

据结构可以带来最优效率的算法。

2、程序设计= 算法+数据结构

3、解决问题方法的效率:

●跟数据的组织方式有关

●跟空间的利用效率有关

●跟算法的巧妙程度有关

4、数据:所有能输入到计算机中,且被计算机处理的符号的集合,

就是计算机操作对象的总称;

就是计算机处理的信息的某种特定的符号表示形式。

5、数据元素:数据中的一个“个体”,数据结构中讨论的基本单位。

相当于“记录”,在计算机程序中通常作为一个整体考虑与处

理。

6、数据项: 相当于记录的“域”, 就是数据的不可分割的最小单

位,如学号。数据元素就是数据项的集合。

7、数据对象:性质相同的数据元素的集合、

例如: 所有运动员的记录集合

8、数据结构:就是相互间存在某种关系的数据元素集合。

9、数据结构就是带结构的数据元素的集合。

10、不同的关系构成不同的结构。

11、次序关系:

{<ai,ai+1>|i=1,2,3,4,5,6}

12、对每种数据结构,主要讨论如下两方面的问题:

1) 数据的逻辑结构,数据结构的基本操作;

2) 数据的存储结构,数据结构基本操作的实现;

13、数据的逻辑结构:

数据之间的结构关系,就是具体关系的抽象。

数据结构的基本操作:

指对数据结构的加工处理。

14、数据的存储结构(物理结构):

数据结构在计算机内存中的表示。

数据结构基本操作的实现:

基本操作在计算机上的实现(方法)。

15、数据结构的有关概念

16、数据元素的4类的基本结构:

○1集合;

○2线性结构:结构中数据元素之间存在一对一的关系;

(完整版)严蔚敏版数据结构课后习题答案-完整版

(完整版)严蔚敏版数据结构课后习题答案-完整版

第1章绪论

1.1 简述下列术语:数据,数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型。

解:数据是对客观事物的符号表示。在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。

数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。

数据对象是性质相同的数据元素的集合,是数据的一个子集。

数据结构是相互之间存在一种或多种特定关系的数据元素的集合。

存储结构是数据结构在计算机中的表示。

数据类型是一个值的集合和定义在这个值集上的一组操作的总称。

抽象数据类型是指一个数学模型以及定义在该模型上的一组操作。是对一般数据类型的扩展。

1.2 试描述数据结构和抽象数据类型的概念与程序设计语言中数据类型概念的区别。

解:抽象数据类型包含一般数据类型的概念,但含义比一般数据类型更广、更抽象。一般数据类型由具体语言系统内部定义,直接提供给编程者定义用户数据,因此称它们为预定义数据类型。抽象数据

类型通常由编程者定义,包括定义它所使用的数据和在这些数据上所进行的操作。在定义抽象数据类型中的数据部分和操作部分时,要求只定义到数据的逻辑结构和操作说明,不考虑数据的存储结构和操作的具体实现,这样抽象层次更高,更能为其他用户提供良好的使用接口。

1.3 设有数据结构(D,R),其中

{}4,3,2,1d d d d D =,{}r R =,()()(){}4,3,3,2,2,1d d d d d d r =

试按图论中图的画法惯例画出其逻辑结构图。

解:

1.4 试仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义(有理数是其分子、分母均为自然数且分母不为零的分数)。

严蔚敏版数据结构课后习题答案-完整版

严蔚敏版数据结构课后习题答案-完整版

第1章绪论

1.1简述下列术语:数据,数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型。

解:数据是对客观事物的符号表示。在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。

数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。

数据对象是性质相同的数据元素的集合,是数据的一个子集。

数据结构是相互之间存在一种或多种特定关系的数据元素的集合。

存储结构是数据结构在计算机中的表示。

数据类型是一个值的集合和定义在这个值集上的一组操作的总称。

抽象数据类型是指一个数学模型以及定义在该模型上的一组操作。是对一般数据类型的扩展。

1.2 试描述数据结构和抽象数据类型的概念与程序设计语言中数据类型概念的区别。

解:抽象数据类型包含一般数据类型的概念,但含义比一般数据类型更广、更抽象。一般数据类型由具体语言系统内部定义,直接提供给编程者定义用户数据,因此称它们为预定义数据类型。抽象数据

类型通常由编程者定义,包括定义它所使用的数据和在这些数据上所进行的操作。在定义抽象数据类型中的数据部分和操作部分时,要求只定义到数据的逻辑结构和操作说明,不考虑数据的存储结构和操作的具体实现,这样抽象层次更高,更能为其他用户提供良好的使用接口。

1.3 设有数据结构(D ,R),其中

{}4,3,2,1d d d d D =,{}r R =,()()(){}4,3,3,2,2,1d d d d d d r =

试按图论中图的画法惯例画出其逻辑结构图。

解:

1.4 试仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义(有理数是其分子、分母均为自然数且分母不为零的分数)。

严蔚敏数据结构课后习题及答案解析

严蔚敏数据结构课后习题及答案解析

严蔚敏数据结构课后习题及答案解析

第一章绪论

一、选择题

1.组成数据的基本单位是()

(A)数据项(B)数据类型(C)数据元素(D)数据变量

2.数据结构是研究数据的()以及它们之间的相互关系。

(A)理想结构,物理结构(B)理想结构,抽象结构

(C)物理结构,逻辑结构(D)抽象结构,逻辑结构

3.在数据结构中,从逻辑上可以把数据结构分成()

(A)动态结构和静态结构(B)紧凑结构和非紧凑结构

(C)线性结构和非线性结构(D)内部结构和外部结构

4.数据结构是一门研究非数值计算的程序设计问题中计算机的(①)以及它们之间的(②)和运算等的学科。

①(A)数据元素(B)计算方法(C)逻辑存储(D)数据映像

②(A)结构(B)关系(C)运算(D)算法

5.算法分析的目的是()。

(A)找出数据结构的合理性(B)研究算法中的输入和输出的关系

(C)分析算法的效率以求改进(D)分析算法的易懂性和文档性

6.计算机算法指的是(①),它必须具备输入、输出和(②)等5个特性。

①(A)计算方法(B)排序方法(C)解决问题的有限运算序列(D)调度方法

②(A)可执行性、可移植性和可扩充性(B)可行性、确定性和有穷性

(C)确定性、有穷性和稳定性(D)易读性、稳定性和安全性

二、判断题

1.数据的机内表示称为数据的存储结构。()

2.算法就是程序。()

3.数据元素是数据的最小单位。()

4.算法的五个特性为:有穷性、输入、输出、完成性和确定性。()

5.算法的时间复杂度取决于问题的规模和待处理数据的初态。()

三、填空题

1.数据逻辑结构包括________、________、_________ 和_________四种类型,其中树形结构和图形结构合称为_____。

严蔚敏版数据结构课后习题答案-完整版

严蔚敏版数据结构课后习题答案-完整版

第1章绪论

1.1 简述下列术语:数据,数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型。

解:数据是对客观事物的符号表示。在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。

数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。

数据对象是性质相同的数据元素的集合,是数据的一个子集。

数据结构是相互之间存在一种或多种特定关系的数据元素的集合。

存储结构是数据结构在计算机中的表示。

数据类型是一个值的集合和定义在这个值集上的一组操作的总称。

抽象数据类型是指一个数学模型以及定义在该模型上的一组操作。是对一般数据类型的扩展。

1.2 试描述数据结构和抽象数据类型的概念与程序设计语言中数据类型概念的区别。

解:抽象数据类型包含一般数据类型的概念,但含义比一般数据类型更广、更抽象。一般数据类型由具体语言系统内部定义,直接提供给编程者定义用户数据,因此称它们为预定义数据类型。抽象数据

类型通常由编程者定义,包括定义它所使用的数据和在这些数据上所进行的操作。在定义抽象数据类型中的数据部分和操作部分时,要求只定义到数据的逻辑结构和操作说明,不考虑数据的存储结构和操作的具体实现,这样抽象层次更高,更能为其他用户提供良好的使用接口。

1.3 设有数据结构(D,R),其中

{}4,3,2,1d d d d D =,{}r R =,()()(){}4,3,3,2,2,1d d d d d d r =

试按图论中图的画法惯例画出其逻辑结构图。

解:

1.4 试仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义(有理数是其分子、分母均为自然数且分母不为零的分数)。

严蔚敏版数据结构课后习题集答案解析~完整版

严蔚敏版数据结构课后习题集答案解析~完整版

第1章绪论

1.1 简述下列术语:数据,数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型。

解:数据是对客观事物的符号表示。在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。

数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。

数据对象是性质相同的数据元素的集合,是数据的一个子集。

数据结构是相互之间存在一种或多种特定关系的数据元素的集合。

存储结构是数据结构在计算机中的表示。

数据类型是一个值的集合和定义在这个值集上的一组操作的总称。

抽象数据类型是指一个数学模型以及定义在该模型上的一组操作。是对一般数据类型的扩展。

1.2 试描述数据结构和抽象数据类型的概念与程序设计语言中数据类型概念的区别。

解:抽象数据类型包含一般数据类型的概念,但含义比一般数据类型更广、更抽象。一般数据类型由具体语言系统内部定义,直接提供给编程者定义用户数据,因此称它们为预定义数据类型。抽象数据

类型通常由编程者定义,包括定义它所使用的数据和在这些数据上所进行的操作。在定义抽象数据类型中的数据部分和操作部分时,要求只定义到数据的逻辑结构和操作说明,不考虑数据的存储结构和操作的具体实现,这样抽象层次更高,更能为其他用户提供良好的使用接口。

1.3 设有数据结构(D,R),其中

{}4,3,2,1d d d d D =,{}r R =,()()(){}4,3,3,2,2,1d d d d d d r =

试按图论中图的画法惯例画出其逻辑结构图。

解:

1.4 试仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义(有理数是其分子、分母均为自然数且分母不为零的分数)。

数据结构 严蔚敏 清华大学出版社 习题及答案

数据结构 严蔚敏 清华大学出版社 习题及答案

第1章绪论 (2)

1、填空题 (2)

2、应用题 (2)

第2章线性表 (3)

1、填空题 (3)

2、选择题 (3)

3、判断题 (4)

4、程序设计题 (4)

第3章栈和队列 (6)

1、填空题 (6)

2、选择题 (6)

3、判断题 (7)

第4章串 (7)

1、选择题 (7)

2、判断题 (7)

第5章数组和广义表 (7)

1、填空题 (7)

2、选择题 (7)

3、判断题 (8)

第6章树和二叉树 (8)

1、填空题 (8)

2、选择题 (9)

3、判断题 (9)

4、应用题 (9)

5、读程序写结果 (16)

第7章图 (17)

1、填空题 (17)

2、选择题 (17)

3、判断题 (18)

4、应用题 (18)

5、程序设计题 (22)

第8章动态存储管理 (23)

1、填空题 (23)

2、选择题 (23)

3、判断题 (23)

4、应用题 (23)

5、程序设计题 (23)

第9章查找 (23)

1、选择题 (23)

2、判断题 (24)

3、应用题 (24)

4、程序设计题 (26)

第10章内部排序 (27)

1、填空题 (27)

2、选择题 (27)

3、判断题 (27)

4、应用题 (28)

第11章外部排序 (28)

第12章文件 (28)

第1章绪论1、填空题

1.常见的数据结构有_线性__结构,__树形___结构,__图形__结构等三种。

2.常见的存储结构有__顺序存储_______结构,__链式存储____结构等两种。

3.数据的基本单位是_数据元素___,它在计算机中是作为一个整体来处理的。

4.数据结构中的结构是指数据间的逻辑关系,常见的结构可分为两大类,__线性结构____和__非线性结构___。

严蔚敏版数据结构课后习题答案-完整版

严蔚敏版数据结构课后习题答案-完整版

第1章 绪论

宇文皓月

1.1 简述下列术语:数据,数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型。

解:数据是对客观事物的符号暗示。在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。

数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。

数据对象是性质相同的数据元素的集合,是数据的一个子集。 数据结构是相互之间存在一种或多种特定关系的数据元素的集合。 存储结构是数据结构在计算机中的暗示。

数据类型是一个值的集合和定义在这个值集上的一组操纵的总称。

抽象数据类型是指一个数学模型以及定义在该模型上的一组操纵。是对一般数据类型的扩展。

1.2 试描述数据结构和抽象数据类型的概念与程序设计语言中数据类型概念的区别。

解:抽象数据类型包含一般数据类型的概念,但含义比一般数据类型更广、更抽象。一般数据类型由具体语言系统内部定义,直接提供给编程者定义用户数据,因此称它们为预定义数据类型。抽象数据类型通常由编程者定义,包含定义它所使用的数据和在这些数据上所进行的操纵。在定义抽象数据类型中的数据部分和操纵部分时,要求只定义到数据的逻辑结构和操纵说明,不考虑数据的存储结构和操纵的具体实现,这样抽象条理更高,更能为其他用户提供良好的使用接口。

1.3 设有数据结构(D,R),其中

{}4,3,2,1d d d d D =,{}r R =,()()(){}4,3,3,2,2,1d d d d d d r =

试按图论中图的画法惯例画出其逻辑结构图。

解:

1.4 试仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义(有理数是其分子、分母均为自然数且分母不为零的分数)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第1章绪论 (2)

1、填空题 (2)

2、应用题 (2)

第2章线性表 (3)

1、填空题 (3)

2、选择题 (3)

3、判断题 (4)

4、程序设计题 (4)

第3章栈和队列 (6)

1、填空题 (6)

2、选择题 (6)

3、判断题 (7)

第4章串 (7)

1、选择题 (7)

2、判断题 (7)

第5章数组和广义表 (7)

1、填空题 (7)

2、选择题 (7)

3、判断题 (8)

第6章树和二叉树 (8)

1、填空题 (8)

2、选择题 (9)

3、判断题 (9)

4、应用题 (9)

5、读程序写结果 (16)

第7章图 (17)

1、填空题 (17)

2、选择题 (17)

3、判断题 (18)

4、应用题 (18)

5、程序设计题 (22)

第8章动态存储管理 (23)

1、填空题 (23)

2、选择题 (23)

3、判断题 (23)

4、应用题 (23)

5、程序设计题 (23)

第9章查找 (23)

1、选择题 (23)

2、判断题 (24)

3、应用题 (24)

4、程序设计题 (26)

第10章内部排序 (27)

1、填空题 (27)

2、选择题 (27)

3、判断题 (27)

4、应用题 (28)

第11章外部排序 (28)

第12章文件 (28)

第1章绪论1、填空题

1.常见的数据结构有_线性__结构,__树形___结构,__图形__结构等三种。

2.常见的存储结构有__顺序存储_______结构,__链式存储____结构等两种。

3.数据的基本单位是_数据元素___,它在计算机中是作为一个整体来处理的。

4.数据结构中的结构是指数据间的逻辑关系,常见的结构可分为两大类,__线性结构____和__非线性结构___。

2、应用题

1、给出以下算法的时间复杂度.

void fun(int n)

{

int i=1,k=100;

while(i

{

k=k+1;

i=i+2;

}

}

时间复杂度为____O(n)_____。

2、给出以下算法的时间复杂度.

void fun2(int n)

{

int i=1,k=100;

while(i

{

i=i*10;

k=k+1;

}

}

时间复杂度为____O(log n)___________。

第2章线性表

1、填空题

1. 线性表按照存储结构不同主要有两种实现方式,一种是__顺序_表,另一种是___链___表。

2.顺序表采用__随机___访问机制对数据元素进行访问。

3.若在单链表结点p的后面插入一个新的结点s,则其操作序列为:

①____s->next=p->next_____________;

②____p->next=s___________________;

4.在单向链表中,若要删除某个结点p,一般要找到__p的前趋__结点,才能实现该操作。

2、选择题

1.将两个各有n个元素的有序表归并成一个有序表,其最少的比较次数是A。

(A)n(B)2n-1(C)2n(D)n-1

2.在单链表中,如果在结点p之后插入一个新结点s,其操作为 A 。

(A)s->next=p->next; p->next=s;

(B)p->next=s; s->next=p->next;

(C)s->next=p; p->next=s->next;

(D)p->next=s; s->next=p;

3.若长度为n的线性表采用顺序存储结构,在其第i个位置删除一个元素的算法的平均时间复杂度为

(C)。(1≤i≤n)

A.O(0)B.O(1) C.O(n)D.O(n2)

4. 若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素需要移动的元素个数为

(B)。(1≤i≤n+1)

A.n-i B.n-i+1 C. i D.n-i-1

3、判断题

1.线性表中每一个元素都有一个前驱和一个后继。(×)

4、程序设计题

1、单链表的结点结构定义如下:

struct LinkNode

{

LinkNode *next;

int data;

};

请根据述函数的功能写程序。

void Insert(LinkNode *h,LinkNode *s)

{//h指向链表的头结点(即使链表中没有元素,头结点也存在。)

//链表中元素已经递增有序

//函数功能为将结点s插入到链表h中。插入后链表仍然保持递增的顺序LinkNode *p,*q;//q指向p的前驱

q=h;

p=h->next;

while(p)

{

if(p->data>s->data)

{//寻找到插入点位置,插入s

q->next=s;

s->next=p;

return;

}

else

{

q=p; (1分)

p=p->next; (1分)

相关文档
最新文档