数据结构作业

第一章绪论

1.数据结构(C语言版 第2版严蔚敏)课后习题

1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结
构、抽象数据类型。
答案:

数据 :是客观事物的符号表示,指所有能输入到计算机中并被计算机程序处理的符号的
总称。 如数学计算中用到的整数和实数, 文本编辑所用到的字符串, 多媒体程序处理的图形、
图像、声音、动画等通过特殊编码定义后的数据。
数据元素 :是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。在有些
情况下,数据元素也称为元素、结点、记录等。数据元素用于完整地描述一个对象,如一个
学生记录,树中棋盘的一个格局(状态)、图中的一个顶点等。
数据项 :是组成数据元素的、有独立含义的、不可分割的最小单位。
例如,学生基本信息表中的学号、姓名、性别等都是数据项。
数据对象 :是性质相同的数据元素的集合,是数据的一个子集。
例如:整数数据对象是集合 N={0 ,± 1,± 2,, } ,
字母字符数据对象是集合 C={‘A’, ‘ B’,..., ‘ Z’, ‘ a’,‘ b’,... ,‘ z’},学生基本信息表也可是一个数据对象。
数据结构 :是相互之间存在一种或多种特定关系的数据元素的集合。换句话说,数据结构是带“结构”的数据元素的集合, “结构”就是指数据元素之间存在的关系。
逻辑结构 :从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。因此,数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。
存储结构: 数据对象在计算机中的存储表示,也称为 物理结构 。
抽象数据类型 :由用户定义的,表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称。具体包括三部分:数据对象、数据对象上关系的集合和对数据对象的基本操作的集合。

2.试举一个数据结构的例子,叙述其逻辑结构和存储结构两方面的含义和相互关系。
答案:

例如有一张学生基本信息表,包括学生的学号、姓名、性别、籍贯、专业等。每个学生基本信息记录对应一个数据元素,学生记录按顺序号排列,形成了学生基本信息记录的线性序列。
对于整个表来说, 只有一个开始结点 ( 它的前面无记录 ) 和一个终端结点 ( 它的后面无记录 ) ,其他的结点则各有一个也只有一个直接前趋和直接后继。 学生记录之间的这种关系就确定了学生表的逻辑结构,即线性结构。
这些学生记录在计算机中的存储表示就是存储结构。 如果用连续的存储单元 ( 如用数组表示 ) 来存放这些记录,则称为顺序存储结构;如果存储单元不连续,而是随机存放各个记录,然后用指针进行链接,则称为链式存储结构。
即相同的逻辑结构,可以对应不同的存储结构。

3.简述逻辑结构的四种基本关系并画出它们的关系图。
答案:

( 1)集合结构
数据元素之间除了“属于同一集合”的关系外,别无其他关系。例如,确定一名学生是否为班级成员,只需将班级看做一个集合结构。
( 2)线性结构
数据元素之间存在一对一的关系。例如,将学生信息数据按照其入学报到的时间先后顺序进行排列,将组成一个线性结构。
( 3)树结构
数据元素之间存在一对多的关系。例如,在班级的管理体系中,班长管理多个组长,每位组长管理多名组员,从而构成树形结构。
( 4)结构或状结构
数据元素之间存在多对多的关系。例如,多位同学之间的朋友关系,任何两位同学都可以是朋友,从而构成图形结构或网状结构。
其中树结构和图结构都属于非线性结构。


4.存储结构由哪两种基本的存储方法实现?
答案:

( 1)顺序存储结构
顺序存储结构是借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系,通常
借助程序设计语言的数组类型来描述。
( 2)链式存储结构
顺序存储结构要求所有的元素依次存放在一片连续的存储空间中,而链式存储结构,无
需占用一整块存储空间。但为了表示结点之间的关系,需要给每个结点附加指针字段,用于
存放后继元素的存储地址。所以链式存储结构通常借助于程序设计语言的指针类型来描述。

5.选择题
(1)在数据结构中,从逻辑上可以把数据结构分成( )。
A.动态结构和静态结构     B .紧凑结构和非紧凑结构
C.线性结构和非线性结构 D .内部结构和外部结构
答案: C

(2)与数据元素本身的形式、内容、相对位置、个数无关的是数据的( )。
A.存储结构 B .存储实现
C.逻辑结构 D .运算实现
答案: C
逻辑结构反映的是数据元素之间的逻辑关系(抽象),它与数据元素本身的具体形式、内容、相对位置、个数等无关。而存储结构和存储实现与具体的实际存储方式相关,运算实现则与具体的运算操作相关,这些都与数据元素的具体细节有一定关联。

(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 .栈
答案: A

6.试分析下面各程序段的时间复杂度。
(1)

x=90; y=100; 
while(y>0) 
    if(x>100) 
        {x=x-10;y--;} 
    else x++; 

答案: O(1)
解释:程序的执行次数为常数阶。

( 2)

for (i=0; i<n; i++) 
    for (j=0; j<m; j++) 
        a[i][j]=0; 

答案:O(mn)
解释:语句 a[i][j]=0; 的执行次数为 m*n。

( 3)

s=0; 
for (i=0; i<n; i++) 
    for(j=0; j<n; j++) 
        s+=B[i][j]; 
//代码相当于把二维数组B中第i行第j列的元素的值与当前s的值相加,然后将结果重新赋值给s
sum=s; 


答案: O(n^{2})
解释:语句 s+=B[i][j]; 的执行次数为 n2。

( 4)

i=1; 
while(i<=n) 
     i=i*3; 


答案:O(\log_{3}n)
解释:

在每次循环中,i 从 1 开始,每次乘以 3,直到 i 大于 n 为止。

设循环了 k 次后结束循环,那么 3^k>n,可以推出 k>log₃(n)

所以时间复杂度为 O(log₃(n))

( 5)

x=0; 
for(i=1; i<n; i++) 
    for (j=1; j<=n-i; j++) 
        x++; 


答案: O(n^{2})
解释:语句 x++; 的执行次数为 n-1+n-2+ …+ 1= n(n-1)/2 。

( 6)

x=n; //n>1 
y=0; 
while(x≥(y+1)*(y+1)) 
    y++; 


答案:O(\sqrt{n})

解释:谁变,设谁为k,本题中k为y,停止的条件为n

在每次循环中,y 不断递增,而判断条件是 x >= (y+1)*(y+1)。即n>=(k+1)^2

可以发现,随着 y 的增长,要满足这个条件需要的次数大致是根号 x 次,也就是 O(√n)(因为 x=n)。即k约为O(\sqrt{n})

2.王道2025版数据结构

1.2.3

系数再大,不及n大

返回值无关






找出基本运算,设执行次数为t,算出最大次数,直接与n比

第二章

1.数据结构(C语言版 第2版严蔚敏)课后习题

2.王道2025版数据结构

第三章

1.数据结构(C语言版 第2版严蔚敏)课后习题

2.王道2025版数据结构

第四章

1.数据结构(C语言版 第2版严蔚敏)课后习题

2.王道2025版数据结构

第五章

1.数据结构(C语言版 第2版严蔚敏)课后习题

2.王道2025版数据结构

第六章

1.数据结构(C语言版 第2版严蔚敏)课后习题

2.王道2025版数据结构

第七章

1.数据结构(C语言版 第2版严蔚敏)课后习题

2.王道2025版数据结构

第八章

1.数据结构(C语言版 第2版严蔚敏)课后习题

2.王道2025版数据结构

  • 30
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第1章 绪论 1.1 数据结构的基本概念和术语 1.1.1 引言 1.1.2 数据结构有关概念及术语 1.1.3 数据结构和抽象数据类型(ADT) 1.2 算法描述与分析 1.2.1 什么是算法 1.2.2 算法描述工具——C语言 1.2.3 算法分析技术初步 习题一 第2章 线性表 2.1 线性表的定义及其运算 2.1.1 线性表的定义 2.1.2 各种运算简介 2.2 线性表的顺序存储结构(向量) 2.2.1 顺序存储结构(向量) 2.2.2 向量中基本运算的实现 2.3 线性表的链表存储结构 2.3.1 单链表与指针 2.3.2 单链表的基本运算 2.4 循环链表和双向链表 2.4.1 循环链表 2.4.2 双向链表 2.4.3 顺序存储结构与链表存储结构的综合分析与比较 2.5 多项式相加问题 2.5.1 多项式相加的链表存储结构 2.5.2 多项式相加的算法实现 2.6 线性表的算法实现举例 2.6.1 实现线性表顺序存储结构及运算的C语言源程序 2.6.2 单链表处理的C语言源程序 习题二 第3章 栈和队列 3.1 栈 3.1.1 栈的定义及其运算 3.1.2 栈的顺序存储结构(向量) 3.1.3 栈的链表存储结构 3.1.4 栈的应用 3.2 队列 3.2.1 队列的定义及运算 3.2.2 队列的顺序存储结构(向量) 3.2.3 队列的链表存储结构 3.3 栈和队列的算法实现举例 习题三 第4章 串 4.1 串的基本概念 4.2 串的存储结构 4.2.1 串的顺序存储 4.2.2 串的链表存储 4.2.3 串变量的存储映象 4.3 串的运算 4.3.1 串的运算简介 4.3.2 串的匹配运算 4.4 文本编辑 习题四 第5章 数组和广义表 5.1 数组的基本概念 5.1.1 数组的概念 5.1.2 数组的顺序表示 5.1.3 特殊矩阵的压缩存储 5.2 稀疏矩阵的三元组存储 5.2.1 三元组表 5.2.2 稀疏矩阵的运算 5.3 稀疏矩阵的十字链表存储 5.3.1 十字链表的组成 5.3.2 十字链表的有关算法 5.4 广义表 5.4.1 广义表的概念和特性 5.4.2 广义表的存储结构 5.4.3 求广义表的深度 5.4.4 广义表的输出 5.4.5 建立广义表的存储结构 5.5 迷宫问题 习题五 第6章 树 6.1 树的基本概念和术语 6.1.1 树的定义 6.1.2 树的常用术语 6.1.3 树的表示方法 6.2 二叉树 6.2.1 二叉树的定义 6.2.2 二叉树的重要性质 6.2.3 二叉树的存储结构 6.2.4 二叉树二叉链表的一个生成算法 6.3 遍历二叉树 6.3.1 先根遍历 6.3.2 中根遍历 6.3.3 后根遍历 6.3.4 二叉树遍历算法的应用 6.4 线索二叉树 6.4.1 线索二叉树的基本概念 6.4.2 线索二叉树的逻辑表示图 6.4.3 中根次序线索化算法 6.4.4 在中根线索树上检索某结点的前趋或后继 6.4.5 在中根线索树上遍历二叉树 6.5 二叉树、 树和森林 6.5.1 树的存储结构 6.5.2 树与二叉树之间的转换 6.5.3 森林与二叉树的转换 6.5.4 一般树或森林的遍历 6.6 树的应用 6.6.1 二叉排序树 6.6.2 哈夫曼树及其应用 6.7 二叉树的建立和遍历C语言源程序示例 习题六 第7章 图 7.1 图的基本概念和术语 7.1.1 图的基本概念 7.1.2 路径和回路 7.1.3 连通图 7.1.4 顶点的度 7.2 图的存储结构 7.2.1 邻接矩阵 7.2.2 邻接链表 7.3 图的遍历和求图的连通分量 7.3.1 图的建立 7.3.2 图的遍历 7.3.3 求图的连通分量 7.4 图的生成树 7.4.1 生成树的概念 7.4.2 最小生成树 7.4.3 普里姆(Prim)算法和克鲁斯卡尔(Kruskal)算法 7.5 最短路径 7.5.1 单源顶点最短路径问题求解 7.5.2 求有向网中每对顶点间的路径 7.6 有向无环图及应用 7.6.1 拓扑排序 7.6.2 关键路径 7.7 图的算法C语言程序实现举例 7.7.1 无向图的邻接表的建立和遍历 7.7.2 有向无环图的拓扑排序和求关键路径 习题七 第8章 查找 8.1 基本概念
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值