当前位置:
文档之家› 《数据结构习题与解析》清华大学专业教材
《数据结构习题与解析》清华大学专业教材
数据逻辑结构包括
和③三种类型,树形结构和图形结构合称为④。
、
答 : 线性结构
树形结构
图形结构
非线性结构
在线性结构中,第一个结点 前驱结点,其余每个结点有且只有
后一个结点 后续结点,其余每个结点有且只有 个后续结点。
答 : 没有
没有
个 前 驱 结 点;最
在树形结构中,树根结点没有 结点,其余每个结点有且只有
逻辑存储
数据映象
结构
关系
运算
算法
答:
数据结构被形式地定义为(
算法
数据元素
操作
映象
答①
,其中 是①的有限集合, 是
数据操作
逻辑结构
存储
关系
上的②有限集合。
在数据结构中,从逻辑上可以把数据结构分成①。
动态结构和静态结构
紧凑结构和非紧凑结构
线性结构和非线性结构
内部结构和外部结构
答:
线性表的顺序存储结构是一种 的存储结构,线性表的链式存储结构是一种 的
算法及其评价
算法是解决某一特定类型问题的有限运算序列。描述一个算法可以采用某一种计算机
语言,也可以采用流程图等。本书的算法是采用 语言描述的。
算法具有 个基本特性:有穷性、确定性、可行性、输入和输出。
评价一个算法一般从 个方面进行:正确性、运行时间、占用空间和简单性。
正确性是指算法是否正确。运行时间是指一个算法在计算机上运行所花费的时间,采用
指出下列各算法的时间复杂度。
为一个正整数
!
是一素数
;
不是一素数
为一个正整数 /
)
;
为一个正整数
解:算法的时间复杂度是由嵌套最深层语句的频度决定的。 的嵌套最深层语句:
+;
它的频度由条件(
行频度小于
,所以其时间复杂度是
的嵌套最深层语句:
)决 定 ,显 然
)。
;
它的频度为 次,所以其时间复杂度是 的嵌套最深层语句:
,其 中:
,
,
,
,
,
,
,其 中:
,
,
,,
,
,
,
,
,
,
,
,
,
,
对表示两结点是双向的。
,其 中:
,
,
,
,
,
,
解:
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
对应逻辑图形如图
所示,它是一种线性结构。
图
对应 的逻辑结构图示
对应逻辑图形如图
所示,它是一种树形结构。
图
对应 的逻辑结构图示
对应逻辑图形如图 所示,它是一种图形结构。
相关题解。
基本概念
数据是信息的载体,在计算机科学中是指所有能输入到计算机中并由计算机程序处理 的符号的总称。
数据结构
数据结构是指同一数据元素类中各数据元素之间存在的关系。数据结构又可以分为下 述三个组成部分,它们分别是数据的逻辑结构、数据的存储结构和数据的运算。
数据的逻辑结构是对数据之间关系的描述,所以有时就把数据的逻辑结构简称为数据 结构。逻辑结构形式上用一个二元组
时间复杂度来量度,所谓时间复杂度是指算法中包含简单操作的次数,一般不必精确计算出
算法的时间复杂度,只要大致计算出相应的数量级,如
)或
)等 。
的形式定义为:若 )是 正 整 数 的 函 数,则
表示存在一个正的常数 ,使得
当
时满足
。一般 地 ,常用 的 时间 复 杂 度有 如 下关 系:
占用空间是指在计算机存储器上所占用的存储空间,主要考虑在算法运行过程中临时 占用的存储空间的大小,称之为空间复杂度,一般以数量级形式给出。简单性是指算法的易 读性等。
例 分析以下程序段的时间复杂度。
其中语句①的频度是 ;语句②的频度是 ;语句③的频度是
;语 句 的频度是
。则该程序段的时间复杂度
。
例 有以下程序,分析其中
函数的时间复杂度。
;语句④的频度是
函数是一个递归排序过程,设
是排序 个元素所需要的时间。
在排序 个元素时,算法的计算时间主要花费在递归调用
上。第 一次 调用 时,处 理的
元素个数为
,也就是对余下的
个元素进行排序,这部分所需要的计算时间应为
。
又因为在其中的循环中,需要
次比较,所以排序 个元素所需要的时间为:
这样得到如下方程:
求解过程为:
故
函数的时间复杂度为
基本题
单项选择题
数据结构是一门研究非数值计算的程序设计问题中计算机的①以及它们之间的②和
运算等的学科。
操作对象
计算方法
结点没有 结点,其余每个结点的后续结点可以 。
答 : 前驱
后续
任意多个
个 前 驱 结 点;叶 子
在图形结构中,每个结点的前驱结点数和后续结点数可以①。 答 : 任意多个
线性结构中元素之间存在
元素之间存在 关系。
答 : 一对一
一对多
关系,树形结构中元素之间存在 多对多
关 系,图 形 结 构 中
算法的五个重要特性是 答:有穷性 确定性 可行性 输入 输出
对应逻辑图形如图 所示,它是一种图形结构, 结构, 对应图中实线部分)则为树形结构。
有如下递归函数
,分析其时间复杂度。
对应图中虚线部分)为线性
图
对应 的逻辑结构图示
解 :设 运行时间是
图
对应 的逻辑结构图示
的运行时间函数是
。该函数中语句①的运行时间是
,其中 )为运算的时间。
,语句②的
即
)的 时 间 复 杂 度 为
图
一颗二叉树
图形结构的存储方式 在 图形 结 构 的数 据 中 ,每 个 结点 可 能 有多 个 前 驱结 点 和 多个 后 续结 点 ,因此 一 般 只能 采 用链接的方式进行存储,同样,由于链接的方式不能表达任意多个后续结点,因此,将链接方 式改进成邻接表,即图形结构中的每个结点对应有一个链表,该链表存储这个结点的所有相 邻结点。 另处还可以采用矩阵存储图形结构,即用矩阵表示图形结构中任意两个结点之间的关 系,这种矩阵称为邻接矩阵。
数据的运算是在数据的逻辑结构上定义的操作算法,如检索、插入、删除、更新和排序
等。
从逻辑上可以把数据结构分为线性结构和非线性结构。在线性结构中有且仅有一个终 端 结 点和 一 个 开始 结 点 ,并 且 所 有 结点 都 最 多只 有 一 个前 驱 和 后 续 ,顺 序 表就 是 典 型的 线 性 结 构 。非 线 性 结构 中 可 能有 多 个 终 端结 点 和 多个 开 始 结点 ,每 个 结点 可 能 有多 个 前 驱和 多 个 后 续 。非 线 性 结 构 中最 重 要 的 是 树形 结 构 和 图 形结 构 。
,即执
它的频度为 求两个 阶矩阵的乘法
次,所以其时间复杂度是 ,其 算 法 如 下:
分析该算法的时间复杂度。 解 :该 算 法 中 主要 语 句 的 频 度 分 别 是:
则时间复杂度为所有语句的频度之和
第 章 顺 序 表
线性结构中的所有结点按它们之间的关系可以排成一个线性序列:
,
其中 是 开始 点, 是 终端 结 点, 是 的 前 驱 结 点 ,而 是 的后续结点
来表示,其中 是结点即数据元素的有限集合,即 是由有限个结点所构成的集合, 是
上的关系的有限集合,即 是由有限个关系所构成的集合,而每个关系都是从 到 的关
系 。设 是一个 到 的关系, ,若
,且 <
,则称 是 的后续, 是
的前驱,这时 和 是相邻的结点(相对 而 言 );如 果 不 存 在 一 个 使 <
存储结构。 随机存取
答:
顺序存取
索引存取
散列存取
算法分析的目的是①,算法分析的两个主要方面是②。 找出数据结构的合理性 研究算法中的输入和输出的关系 分析算法的效率以求改进 分析算法的易懂性和文档性 空间复杂性和时间复杂性 正确性和简明性 可读性和文档性 数据复杂性和程序复杂性
答:
计算机算法指的是①,它必具备输入、输出和
,
)。
通常把上述线性序列称为“线性表”,把线性结构中的结点称为元素或“表目”。将一个线
性表存放到计算机中,可以采用不同的方法,其中最简单而自然的就是顺序的方法,即把表
目按其索引值从小到大一个接一个地存放在相邻的单元里。顺序方法存储的线性表简称“顺
图
逻辑结构图示
设有如图 所示的逻辑结构图示,给出它的逻辑结构。 解:本题的逻辑结构如下:
,
该逻辑结构是一个树形结构,其树根为 ,叶子结点为
和
图
逻辑结构图示
下 列是 几种 用二 元组 表示 的数 据结 构 ,画出 它 们分 别对 应的 逻辑 图形 表示 ,并 指出 它 们分别属于何种结构。
,其 中:
例 分析以下程序段的时间复杂度。
语句的频度指的是该语句重复执行的次数。一个算法中所有语句的频度之和构成了该
算法的运行时间。在本例算法中,其中语句①的频度是
,语句②的频度是
。则该程序段的时间复杂度
例 分析以下程序段的时间复杂度。
其中语句①的频度是 ,设语句②的频度 ,则 有:
即
,取最大值 )
则该程序段的时间复杂度 )
续编码的,每个存储单元 都有唯一的后续单元
和 称为相邻单元。一片
相邻的存储单元的整体叫做存储区域,记做 。把 存储在计算机中,首先必须建立一个从
的结点到 的单元的映象