第1章概论答案 数据结构 田鲁怀著
- 格式:doc
- 大小:182.00 KB
- 文档页数:4
第1章概论习题参考解答一、填空题1、数据的逻辑结构是数据元素之间的逻辑关系,通常有下列4类:()、()、()、()。
【答】集合、线性结构、树型结构和图状结构。
2、数据的存储结构是数据在计算机存储器里的表示,主要有4种基本存储方法:()、()、()、()。
【答】顺序存储方法、链接存储方法、索引存储方法和散列存储方法。
二、选择题1、一个算法必须在执行有穷步之后结束,这是算法的()。
(A)正确性(B)有穷性(C)确定性(D)可行性【答】B。
2、算法的每一步,必须有确切的定义。
也就是说,对于每步需要执行的动作必须严格、清楚地给出规定。
这是算法的()。
(A)正确性(B)有穷性(C)确定性(D)可行性【答】C。
3、算法原则上都是能够由机器或人完成的。
整个算法好像是一个解决问题的“工作序列”,其中的每一步都是我们力所能及的一个动作。
这是算法的()。
(A)正确性(B)有穷性(C)确定性(D)可行性【答】D。
三、简答题1、算法与程序有何异同?【答】尽管算法的含义与程序非常相似,但两者还是有区别的。
首先,一个程序不一定满足有穷性,因此它不一定是算法。
例如,系统程序中的操作系统,只要整个系统不遭受破坏,它就永远不会停止,即使没有作业要处理,它仍处于等待循环中,以待一个新作业的进入。
因此操作系统就不是一个算法。
其次,程序中的指令必须是计算机可以执行的,而算法中的指令却无此限止。
如果一个算法采用机器可执行的语言来书写,那么它就是一个程序。
2、什么是数据结构?试举一个简单的例子说明。
【答】数据结构是指数据对象以及该数据对象集合中的数据元素之间的相互关系(即数据元素的组织形式)。
例如,队列的逻辑结构是线性表(先进先出);队列在计算机中既可以采用顺序存储也可以采用链式存储;对队列可进行删除、插入数据元素以及判断是否为空队列、将队列置空等操作。
3、什么是数据的逻辑结构?什么是数据的存储结构?【答】数据元素之间的逻辑关系,也称为数据的逻辑结构。
习题一参考答案一、概念题1. 试述下列各组概念:⑴数据、数据元素、数据项⑵数据结构、数据的逻辑结构、数据的存储结构⑶数据类型、数据操作⑷算法、算法的时间复杂度、算法的空间复杂度参考答案: 略2.试述数据结构研究的3个方面的内容。
参考答案:数据结构研究的3个方面分别是数据的逻辑结构、数据的存储结构和数据的运算(操作)。
3.试述集合、线性结构、树型结构和图型结构四种常用数据结构的特性。
参考答案:集合结构:集合中数据元素之间除了“同属于一个集合”的特性外,数据元素之间无其它关系,它们之间的关系是松散性的。
线性结构:线性结构中数据元素之间存在“一对一”的关系。
即若结构非空,则它有且仅有一个开始结点和终端结点,开始结点没有前趋但有一个后继,终端结点没有后继但有一个前趋,其余结点有且仅有一个前驱和一个后继。
树形结构:树形结构中数据元素之间存在“一对多”的关系。
即若结构非空,则它有一个称为根的结点,此结点无前驱结点,其余结点有且仅有一个前驱,所有结点都可以有多个后继。
图形结构:图形结构中数据元素之间存在“多对多”的关系。
即若结构非空,则在这种数据结构中任何结点都可能有多个前驱和后继。
4.设有数据的逻辑结构的二元组定义形式为B=(D,R),其中D={a1,a2,…,a n},R={<a i,a i+1>| i=1,2,…,n-1},请画出此逻辑结构对应的顺序存储结构和链式存储结构的示意图。
参考答案:顺序存储结构示意图如下:0 1 2 … n-2 n-1链式存储结构示意图如下:…5.设一个数据结构的逻辑结构如图1.9所示,请写出它的二元组定义形式。
图1.9 第5题的逻辑结构图参考答案:它的二元组定义形式为B=(D,R),其中D={k1,k2,k3,k4,k5,k6,k7,k8,k9},R=<k1,k3>,<k1,k8>,<k2,k3><k2,k4>,<k2,k5>,<k3,k9>,<k4,k6>,<k4,k7>,<k5,k6>,<k8,k9>,<k9,k7> }。
数据结构第一章课后习题与答案资料1.什么是数据结构?答:数据结构是指数据对象以及数据对象之间的关系、操作和约束的一种逻辑结构。
它关注如何将数据以及数据之间的关系组织起来,以便更高效地进行操作和使用。
2.数据结构的分类有哪些?答:数据结构可以分为线性数据结构和非线性数据结构。
线性数据结构包括数组、链表、栈和队列;非线性数据结构包括树和图。
3.什么是算法?答:算法是指解决特定问题的一系列步骤和规则。
它可以描述为一个有限的指令集,用于将输入数据转换为输出结果。
4.算法的特征有哪些?答:算法具有以下特征:•输入:算法必须有输入,可以是零个或多个。
•输出:算法必须有输出,可以是零个或多个。
•有穷性:算法必须在有限步骤内结束。
•确定性:算法的每一步骤必须明确且无歧义。
•可行性:算法的每一步骤必须可行,即可以执行。
5.算法的时间复杂度是什么?如何表示时间复杂度?答:算法的时间复杂度是指算法执行所需的时间。
它通常用大O符号表示。
常见的时间复杂度有O(1)、O(n)、O(n^2)等。
6.算法的空间复杂度是什么?如何表示空间复杂度?答:算法的空间复杂度是指算法执行所需的额外空间。
它通常用大O符号表示。
常见的空间复杂度有O(1)、O(n)、O(n^2)等。
7.什么是数据的逻辑结构?答:数据的逻辑结构是指数据对象之间的关系。
常见的逻辑结构有线性结构、树形结构和图形结构。
8.什么是数据的存储结构?答:数据的存储结构是指数据在计算机内存中的表示方式。
常见的存储结构有顺序存储结构和链式存储结构。
9.顺序存储结构和链式存储结构有什么区别?答:顺序存储结构将数据存储在一块连续的内存空间中,可以随机访问元素,但插入和删除操作需要移动大量元素。
链式存储结构将数据存储在不连续的内存空间中,通过指针相连,插入和删除操作只需要修改指针,但访问元素需要遍历链表。
10.数组和链表的区别是什么?答:数组是一种顺序存储结构,元素在内存中连续存储,可以通过下标直接访问元素;链表是一种链式存储结构,元素在内存中不连续存储,通过指针相连。
第1章绪论1 •简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。
答案:数据:是客观事物的符号表示,指所有能输入到计算机中并被计算机程序处理的符号的总称。
如数学计算中用到的整数和实数,文本编辑所用到的字符串,多媒体程序处理的图形、图像、声音、动画等通过特殊编码定义后的数据。
数据元素:是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。
在有些情况下,数据元素也称为元素、结点、记录等。
数据元素用于完整地描述一个对象,如一个学生记录,树中棋盘的一个格局(状态)、图中的一个顶点等。
数据项:是组成数据元素的、有独立含义的、不可分割的最小单位。
例如,学生基本信息表中的学号、姓名、性别等都是数据项。
数据对象:是性质相同的数据元素的集合,是数据的一个子集。
例如:整数数据对象是集合N={0, ± 1,土2,…},字母字符数据对象是集合C={ ‘A',‘ B',…,‘ Z', ‘a',‘ $,•••,‘ z' }, 学生基本信息表也可是一个数据对象。
数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。
换句话说,数据结构是带“结构”的数据元素的集合,“结构”就是指数据元素之间存在的关系。
逻辑结构:从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。
因此,数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。
存储结构:数据对象在计算机中的存储表示,也称为物理结构。
抽象数据类型:由用户定义的,表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称。
具体包括三部分:数据对象、数据对象上关系的集合和对数据对象的基本操作的集合。
2•试举一个数据结构的例子,叙述其逻辑结构和存储结构两方面的含义和相互关系。
答案:例如有一张学生基本信息表,包括学生的学号、姓名、性别、籍贯、专业等。
每个学生基本信息记录对应一个数据元素,学生记录按顺序号排列,形成了学生基本信息记录的线性序列。
第一部分数据构造概论及算法分析一、选择题1. 数据构造是一门研究计算机中__ __对象及其关系的学科。
〔1〕数值运算〔2〕非数值运算〔3〕集合〔4〕非集合2.数据构造的定义为(K, R), 其中K是__ __的集合。
〔1〕算法〔2〕数据元素〔3〕数据操作〔4〕逻辑构造3. 算法分析的目的是____。
〔1〕找出数据构造的合理性〔2〕研究算法中输入和输出的关系〔3〕分析算法的效率以求改进〔4〕分析算法的易懂性和文档性4.数据的不可分割的根本单位是....___。
A.元素B.结点C.数据类型D.数据项5. 以下算法suanfa2的时间复杂度为____。
int suanfa2(int n){ int t=1;while(t<=n)t=t*2;return t;}A.O(log2n)B.O(2n)C.O(n2)D.O(n)6.〔〕是具有一样特性数据元素的集合, 是数据的子集。
A 数据符号B 数据对象C 数据D 数据构造7. 与数据元素本身的形式、内容、相对位置、个数无关的是数据的( )。
A.存储构造B.逻辑构..C.算法D.操作8. 数据构造是研究数据的〔〕及它们之间的互相联络。
A.理想构造, 物理构造b、理想构造, 逻辑构造C、物理构造, 逻辑构造d、抽象构造, 逻辑构造9. 组成数据的根本单位是〔〕。
a、数据项b、数据类型c、数据元素d、数据变量10. 数据在计算机存储器内表示时, 物理地址与逻辑地址一样并且是连续的, 称之为:〔A〕存储构造〔B〕逻辑构造〔C〕顺序存储构造〔D〕链式存储构造11. 算法指的是〔〕A. 计算机程序B. 解决问题的计算方法C. 排序算法D. 解决问题的有限运算序列12. 以下算法suanfa1中语句"x=x*2;"的执行次数是〔〕。
void suanfa1(int n){ int i,j,x=1;for(i=1;i<=n;i++)for(j=i;j<=n;j++)x=x*2;printf("%d",x);}A.n(n-1)/2B.n(n+1)/2C.n2D.⎡nlog2n⎤13.由____组成的集合是一个数据对象。
1.6 习题一、名词解释1.数据结构:相互之间存在一种或多种特定关系的数据元素的集合。
结构,就是数据之间的关系,即数据与数据之间的排列方式。
2.数据元素:是有一定意义数据的基本单位,可由若干个数据项组成,在计算机中通常作为整体处理,也可称为结点、记录。
如:在人类社会中,一个“人”是一个数据元素,是有一定意义的作为整体处理的基本单位,在社会关系里,一般都是拿某个人说事儿,不会拿某个人的胳膊或腿儿说事儿;但在医学结构上,人又由若干部分组成,比如四肢、心、肝、脾、肺、肾等。
3.数据项:是具有独立含义的最小标识单位。
如一个“人”有眼睛、耳朵、手等数据项,也可有姓名、年龄、性别等这些数据项。
一个记录可称为一个数据元素,而这个元素中的某一字段就是一个数据项。
4.逻辑结构有时也称数据结构,它是数据元素之间关系的描述,可以看作是从具体问题抽象出来的数学模型,与数据的存储无关,是独立于计算机的。
5.物理结构是数据的逻辑结构在计算机中的表示和实现,也称存储结构。
6.时间复杂度:当问题规模很大时,程序执行时间随问题规模增长程度的一个度量。
7.空间复杂度:是指程序运行从开始到结束所需的存储量。
二、判断题(1)数据元素是最小的项。
(×)(2)算法就是程序。
(×)(算法是解决问题的有限指令序列,它可以用某个具体的程序来表示,也可以用自然语言、流程图、伪代码表示。
即可以用程序来表达算法,但算法不见得就是程序。
目前,用来表达算法用得最多的是伪代码,因为伪代码比具体的程序要求宽松、易理解,同时又比自然语言更容易转换成可实现的程序。
)(3)数据结构是数据对象与对象中数据元素之间关系的集合。
(√)(4) 从逻辑关系上讲,数据结构主要分为两大类:线性结构和非线性结构。
(√ )(5) 数据的逻辑结构与数据元素本身的内容和形式无关。
(√ )三、填空题(1)算法的一个特性是确定性,即针对一组确定的输入,算法应始终得出一组确定的结果。
《数据结构》教材课后习题+答案数据结构第一章介绍数据结构是计算机科学中重要的概念,它涉及到组织和存储数据的方法和技术。
数据结构的选择对于算法的效率有着重要的影响。
本教材为读者提供了丰富的课后习题,以帮助读者巩固所学知识并提高解决问题的能力。
下面是一些选定的习题及其答案,供读者参考。
第二章线性表习题一:给定一个顺序表L,编写一个算法,实现将其中元素逆置的功能。
答案一:算法思路:1. 初始化两个指针i和j,分别指向线性表L的首尾两个元素2. 对于L中的每一个元素,通过交换i和j所指向的元素,将元素逆置3. 当i>=j时,停止逆置算法实现:```pythondef reverse_list(L):i, j = 0, len(L)-1while i < j:L[i], L[j] = L[j], L[i]i += 1j -= 1```习题二:给定两个线性表A和B,编写一个算法,将线性表B中的元素按顺序插入到线性表A中。
答案二:算法思路:1. 遍历线性表B中的每一个元素2. 将B中的元素依次插入到A的末尾算法实现:```pythondef merge_lists(A, B):for element in B:A.append(element)```第三章栈和队列习题一:编写一个算法,判断一个表达式中的括号是否匹配。
表达式中的括号包括小括号"()"、中括号"[]"和大括号"{}"。
答案一:算法思路:1. 遍历表达式中的每一个字符2. 当遇到左括号时,将其推入栈中3. 当遇到右括号时,判断栈顶元素是否与其匹配4. 当遇到其他字符时,继续遍历下一个字符5. 最后判断栈是否为空,若为空则表示括号匹配算法实现:```pythondef is_matching(expression):stack = []for char in expression:if char in "([{":stack.append(char)elif char in ")]}":if not stack:return Falseelif (char == ")" and stack[-1] == "(") or (char == "]" and stack[-1] == "[") or (char == "}" and stack[-1] == "{"):stack.pop()else:return Falsereturn not stack```习题二:利用两个栈实现一个队列。
第一章概论自测题答案
一、填空题
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. 数据结构中,与所使用的计算机无关的是数据的结构;
A) 存储B) 物理C) 逻辑D) 物理和存储
(C)3. 算法分析的目的是:
A) 找出数据结构的合理性B) 研究算法中的输入和输出的关系
C) 分析算法的效率以求改进D) 分析算法的易懂性和文档性
(A)4. 算法分析的两个主要方面是:
A) 空间复杂性和时间复杂性B) 正确性和简明性
C) 可读性和文档性D) 数据复杂性和程序复杂性
( C )5. 计算机算法指的是:
A) 计算方法B) 排序方法
C) 解决问题的有限运算序列D) 调度方法
(B)6. 计算机算法必须具备输入、输出和等5个特性。
A) 可行性、可移植性和可扩充性B) 可行性、确定性和有穷性
C) 确定性、有穷性和稳定性D) 易读性、稳定性和安全性
三、简答题
2.【严题集1.2②】数据结构和数据类型两个概念之间有区别吗?
答:简单地说,数据结构定义了一组按某些关系结合在一起的数组元素。
数据类型不仅定义了一组带结构的数据元素,而且还在其上定义了一组操作。
3. 简述线性结构与非线性结构的不同点。
答:线性结构反映结点间的逻辑关系是 一对一的,非线性结构反映结点间的逻辑关系是多对多的。
四、【严题集1.8④】分析下面各程序段的时间复杂度
五、设有数据逻辑结构S=(D,R ),试按各小题所给条件画出这些逻辑结构的图示,并确定相对于关系R ,哪些结点是开始结点,哪些结点是终端结点?
1. 【严蔚敏习题集P7 1.3②】
D={d1,d2,d3,d4} R={(d1,d2),(d2,d3),(d3,d4) }
答: d1→d2→d3→d4 d1—无直接前驱,是首结点 d4—无直接后继是尾结点
2. s=0; for i=0; i<n; i++) for(j=0; j<n; j++) s+=B[i][j]; sum=s; 答:O (n 2)
1. for (i=0; i<n; i++) for (j=0; j<m; j++) A[i][j]=0; 答:O (m*n ) 4. i=1; while(i<=n) i=i*3; 答:O (log 3n )和自考的第7
面一样!
2。
D={d1,d2,…,d9}
R={(d1,d2),(d1,d3),(d3,d4),(d3,d6),(d6,d8),(d4,d5),
(d6,d7),(d8,d9) }
答:此图为树形结构 d1—无直接前驱,是根结点 d2,d5,d7,d9—无直接后继是叶子结点
3.D={d1,d2,…,d9}
R={(d1,d3),(d1,d8),(d2,d3),(d2,d4),(d2,d5),(d3,d9),
(d5,d6),(d8,d9),(d9,d7), (d4,d7), (d4,d6) }
答:此图为图形结构 d1,d2—无直接前驱,是开始结点 d6,d7—无直接后继是终端结点。