数据结构习题(一)
习题(一)
一、选择
1.在数据结构中, 从逻辑上可以把数据结构分成()。
A. 动态结构和静态结构
B. 紧凑结构和非紧凑结构
C. 线性结构和非线性结构
D. 内部结构和外部结构
答:C,从逻辑上分类且只两类结构的话就是线性结构和非线性结构 ,若是分为四类的话就是集合结构、线性结构、树形结构、土砖结构/网状结构。
2.与数据元素本身的形式、 内容、 相对位置、 个数无关的是数据的( )。
A. 存储结构
B. 存储实现
C. 逻辑结构
D. 运算实现
答:C,A中存储结构是对内容和个数的体现;B中存储实现是对位置的体现;逻辑结构与数据的存储无关、是独立于计算机的;运算实现是对形式的体现/存储及运算都需考虑数据元素本身的形式、内容等。而逻辑结构中关心元素之间的逻辑关系,与数据元素本身无关。
3.通常要求同一逻辑结构中的所有数据元素具有相同的特性, 这意味着( )。
A. 数据具有同一特点
B. 不仅数据元素所包含的数据项的个数要相同, 而且对应数据项的类型要一致
C. 每个数据元素都一样
D. 数据元素所包含的数据项的个数要相等
答:B,数据元素具有同一特点每个数据元素都一样;不仅数据元素所包含的数据项的个数要相同,而且对应的数据项的类型要一致数据元素所包含的数据项的个数要相等。
4.以下说法正确的是( )。
A. 数据元素是数据的最小单位
B. 数据项是数据的基本单位
C. 数据结构是带有结构的各数据项的集合
D. 一些表面上很不相同的数据可以有相同的逻辑结构
答:D,数据结构是带有结构的各项数据元素的集合
5.算法的时间复杂度取决于( )。
A. 问题的规模
B. 待处理数据的初态
C. 计算机的配置
D. A和B
答:D,算法的时间复杂度取决于问题的规模和待处理数据的初态
6.以下数据结构中,( )是非线性数据结构。
A树
B字符串
C队列
D栈
答:B
7.算法分析的目的是( )。
A.找出数据结构的合理性
B.研究算法中的输入和输出的关系
C.分析算法的效率以求改进
D.分析算法的易懂性和文档性
答:C
8.计算机算法指的是( )。
A.计算方法
B. 排序方法
C.求解问题的有限运算序列
D.调度方法
答:C
二、填空
- 数据结构包括数据的逻辑结构、数据的存储结构和数据的运算这三个方面的内容。
- 数据结构按逻辑结构可分为两大类,它们分别是一个算法的效率可分为线性结构和非线性结构。
- 数据结构被形式地定义为(D,R),其中 D 是数据元素的有限集合,R 是 D 上的关系有限集合。
- 在线性结构中,第一个结点没有前驱结点,其余每个结点有且只有 1 个前驱结点;最后一个结点没有后继结点,其余每个结点有且只有 1 个后继结点。
- 在树形结构中,树根结点没有前驱结点,其余每个结点有且只有1个前驱结点;叶子结点没有后继结点,其余每个结点的后继结点数可以是任意多个。
- 在图形结构中,每个结点的前驱结点数和后继结点数可以是(任意多个)。
- 数据的存储结构主要有四种,它们分别是顺序、链式、索引和哈希存储结构。
- 一个算法的效率可分为时间效率和空间效率。
三、简答题
-
简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。
答案:
- 数据:是客观事物的符号表示,指所有能输入到计算机中并被计算机程序处理的符号的总称。如数学计算中用到的整数和实数,文本编辑所用到的字符串,多媒体程序处理的图形、图像、声音、动画等通过特殊编码定义后的数据。
- 数据元素:是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。在有些情况下,数据元素也称为元素、结点、记录等。数据元素用于完整地描述一个对象,如一个学生记录,树中棋盘的一个格局(状态)、图中的一个顶点等。
- 数据项:是组成数据元素的、有独立含义的、不可分割的最小单位。例如,学生基本信息表中的学号、姓名、性别等都是数据项。
- 数据对象:是性质相同的数据元素的集合,是数据的一个子集。例如:整数数据对象是集合N={0,±1,±2,…},字母字符数据对象是集合C={‘A’,‘B’,…,‘Z’,‘a’,‘b’,…,‘z’},学生基本信息表也可是一个数据对象。
- 数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。换句话说,数据结构是带“结构”的数据元素的集合,“结构”就是指数据元素之间存在的关系。
- 逻辑结构:从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。因此,数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。
- 存储结构:数据对象在计算机中的存储表示,也称为物理结构。抽象数据类型:由用户定义的,表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称。具体包括三部分:数据对象、数据对象上关系的集合和对数据对象的基本操作的集合。
-
试举一个数据结构的例子, 叙述其逻辑结构和存储结构两个层次的含义及相互关系。
答案
例如有一张学生基本信息表,包括学生的学号、姓名、性别、籍贯、专业等。每个学生基本信息记录对应一个数据元素,学生记录按顺序号排列,形成了学生基本信息记录的线性序列。对于整个表来说,只有一个开始结点(它的前面无记录)和一个终端结点(它的后面无记录),其他的结点则各有一个也只有一个直接前趋和直接后继。学生记录之间的这种关系就确定了学生表的逻辑结构,即线性结构。
这些学生记录在计算机中的存储表示就是存储结构。如果用连续的存储单元(如用数组表示)来存放这些记录,则称为顺序存储结构;如果存储单元不连续,而是随机存放各个记录,然后用指针进行链接,则称为链式存储结构。
即相同的逻辑结构,可以对应不同的存储结构。
-
简述逻辑结构的四种基本关系并画出它们的关系图。
集合结构: 数据元素之间除了“属于同一集合”的关系外,别无其他关系。
线性结构: 数据元素之间存在一对一的关系。
树结构: 数据元素之间存在一对多的关系。
图结构或网状结构: 数据元素之间存在多对多的关系。
-
存储结构由哪两种基本的存储方法实现?
-
顺序存储结构
顺序存储结构是借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系,顺序存储结构要求所有的元素依次存放在一片连续的存储空间中,通常借助程序设计语言的数组类型来描述。
- 链式存储结构
链式存储结构无需占用一整块存储空间。但为了表示结点之间的关系,需要给每个结点附加指针字段,用于存放后继元素的存储地址。所以链式存储结构通常借助于程序设计语言的指针类型来描述。
四、分析题
1 | x=90; y=100; |
答:O(1)
1 | for (i=0; i<n; i++) |
答:O(mn)
1 | s=0; |
答:O($n^2$)
1 | i=1; |
答:O(log3 n) 假设执行x次,因为i=1,所以$3^x=n$ $x=log_3n$
1 | x=0; |
答:O($n^2$)
1 | x=n; //n>1 |
答案:O(log2 n);