知识大全 数据结构第一章串讲+习题答案+复习要点
Posted 结点
篇首语:空空的口袋不能阻碍你的未来,空空的脑袋你将永远贫穷。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 数据结构第一章串讲+习题答案+复习要点相关的知识,希望对你有一定的参考价值。
本章的重点是了解数据结构的逻辑结构 存储结构 数据的运算三方面的概念及相互关系 难点是算法复杂度的分析方法
需要达到 <识记> 层次的基本概念和术语有 数据 数据元素 数据项 数据结构 特别是数据结构的逻辑结构 存储结构及数据运算的含义及其相互关系 数据结构的两大类逻辑结构和四种常用的存储表示方法
需要达到 <领会> 层次的内容有算法 算法的时间复杂度和空间复杂度 最坏的和平均时间复杂度等概念 算法描述和算法分析的方法 对一般的算法要能分析出时间复杂度
对于基本概念 仔细看书就能够理解 这里简单提一下
数据就是指能够被计算机识别 存储和加工处理的信息的载体
数据元素是数据的基本单位 有时一个数据元素可以由若干个数据项组成 数据项是具有独立含义的最小标识单位 如整数这个集合中 这个数就可称是一个数据元素 又比如在一个数据库(关系式数据库)中 一个记录可称为一个数据元素 而这个元素中的某一字段就是一个数据项
数据结构的定义虽然没有标准 但是它包括以下三方面内容 逻辑结构 存储结构 和对数据的操作 这一段比较重要 我用自己的语言来说明一下 大家看看是不是这样
比如一个 表 ( 数据库 ) 我们就称它为一个数据结构 它由很多 记录 ( 数据元素 )组成 每个元素又包括很多 字段 ( 数据项 )组成 那么这张表的逻辑结构是怎么样的呢? 我们分析数据结构都是从 结点 (其实也就是元素 记录 顶点 虽然在各种情况下所用名字不同 但说的是同一个东东)之间的关系来分析的 对于这个表中的任一个记录(结点) 它只有一个 直接前趋 只有一个 直接后继 (前趋后继就是前相邻后相邻的意思) 整个表只有一个 开始结点 和一个 终端结点 那我们知道了这些关系就能明白这个表的逻辑结构了
而 存储结构 则是指用 计算机语言 如何表示结点之间的这种关系 如上面的表 在计算机语言中描述为连续存放在一片内存单元中 还是随机的存放在内存中再用指针把它们链接在一起 这两种表示法就成为两种不同的存储结构 ( 注意 在本课程里 我们只在高级语言的层次上讨论存储结构 )
第三个概念就是对 数据的运算 比如一张表格 我们需要进行查找 增加 修改 删除记录等工作 而怎么样才能进行这样的操作呢? 这也就是数据的运算 它不仅仅是加减乘除这些算术运算了 在数据结构中 这些运算常常涉及算法问题
弄清了以上三个问题 就可以弄清数据结构这个概念
通常我们就将数据的 逻辑结构 简称为 数据结构 数据的逻辑结构分两大类 线性结构 和 非线性结构 (这两个很容易理解)
数据的存储方法有四种 顺序存储方法 链接存储方法 索引存储方法和散列存储方法
下一个是 难点 问题 就是算法的描述和分析 主要是 算法复杂度 的分析方法及其运用
首先了解一下几个概念 一个是 时间复杂度 一个是 渐近时间复杂度 前者是某个算法的时间耗费 它是该算法所求解问题 规模 n的函数 而后者是指当问题规模趋向无穷大时 该算法 时间复杂度的数量级
当我们评价一个算法的时间性能时 主要标准就是 算法的渐近时间复杂度 因此 在算法分析时 往往对两者不予区分 经常是将渐近时间复杂度T(n)=O(f(n)简称为时间复杂度 其中的f(n)一般是算法中频度最大的语句频度
此外 算法中语句的频度 不仅与问题规模有关 还与输入实例中各元素的取值相关 但是我们总是考虑在最坏的情况下的时间复杂度 以保证算法的运行时间不会比它更长
常见的时间复杂度 按数量级递增排列依次为 常数阶O( ) 对数阶O(log n) 线性阶O(n) 线性对数阶O(nlog n) 平方阶O(n^ ) 立方阶O(n^ ) k次方阶O(n^k) 指数阶O( ^n)
时间复杂度的分析计算请看书本上的例子 然后我们通过做练习加以领会和巩固
数 据 结 构 习 题 一
简述下列概念 数据 数据元素 数据类型 数据结构 逻辑结构 存储结构 线性结构 非线性结构
◆ 数据 指能够被计算机识别 存储和加工处理的信息载体
◆ 数据元素 就是数据的基本单位 在某些情况下 数据元素也称为元素 结点 顶点 记录 数据元素有时可以由若干 数据项 组成
◆ 数据类型 是一个值的集合以及在这些值上定义的一组操作的总称
◆ 数据结构 指的是数据之间的相互关系 即数据的组织形式 一般包括三个方面的内容:数据的 逻辑结构 存储结构 和 数据的运算
◆ 逻辑结构 指各数据元素之间的逻辑关系
◆ 存储结构 就是数据的逻辑结构用计算机语言的实现
◆ 线性结构 数据逻辑结构中的一类 它的特征是若结构为非空集 则该结构有且只有一个 开始结点 和一个 终端结点 并且所有结点都最多只有一个 直接前趋 和一个 直接后继 线性表就是一个典型的线性结构
◆ 非线性结构 数据逻辑结构中的另一大类 它的逻辑特征是一个结点可能有多个直接前趋和直接后继
试举一个数据结构的例子 叙述其逻辑结构 存储结构 运算三个方面的内容
◆ 例如有一张学生成绩表 记录了一个班的学生各门课的成绩 按学生的姓名为一行记成的表 这个表就是一个数据结构 每个记录(有姓名 学号 成绩等字段)就是一个结点 对于整个表来说 只有一个开始结点(它的前面无记录)和一个终端结点(它的后面无记录) 其他的结点则各有一个也只有一个直接前趋和直接后继(它的前面和后面均有且只有一个记录) 这几个关系就确定了这个表的逻辑结构
那么我们怎样把这个表中的数据存储到计算机里呢? 用高级语言如何表示各结点之间的关系呢? 是用一片连续的内存单元来存放这些记录(如用数组表示)还是随机存放各结点数据再用指针进行链接呢? 这就是存储结构的问题 我们都是从高级语言的层次来讨论这个问题的 (所以各位赶快学C语言吧)
最后 我们有了这个表(数据结构) 肯定要用它 那么就是要对这张表中的记录进行查询 修改 删除等操作 对这个表可以进行哪些操作以及如何实现这些操作就是数据的运算问题了
常用的存储表示方法有哪几种?
常用的存储表示方法有四种:
◆ 顺序存储方法 它是把逻辑上相邻的结点存储在物理位置相邻的存储单元里 结点间的逻辑关系由存储单元的邻接关系来体现 由此得到的存储表示称为 顺序存储结构
◆ 链接存储方法 它不要求逻辑上相邻的结点在物理位置上亦相邻 结点间的逻辑关系是由附加的指针字段表示的 由此得到的存储表示称为 链式存储结构
◆ 索引存储方法 除建立存储结点信息外 还建立附加的索引表来标识结点的地址
◆ 散列存储方法 就是根据结点的关键字直接计算出该结点的存储地址
设三个函数f g h分别为 f(n)= n^ +n^ + g(n)= n^ + n^ h(n)=n^ + nlgn 请判断下列关系是否成立
( ) f(n)=O(g(n))
( ) g(n)=O(f(n))
( ) h(n)=O(n^ )
( ) h(n)=O(nlgn)
◆ ( )成立
◇ 这里我们复习一下渐近时间复杂度的表示法 T(n)=O(f(n)) 这里的 O 是数学符号 它的严格定义是 若T(n)和f(n)是定义在正整数集合上的两个函数 则T(n)=O(f(n))表示存在正的常数C和 n 使得当n≥ n 时都满足 ≤T(n)≤C·f(n) 用容易理解的话说就是 这两个函数当整型自变量n趋向于无穷大时 两者的比值是一个不等于 的常数 这么一来 就好计算了吧 第( )题中两个函数的最高次项都是n^ 因此当n→∞时 两个函数的比值是一个常数 所以这个关系式是成立的
◆ ( )成立
◆ ( )成立
◆ ( )不成立
设有两个算法在同一机器上运行 其执行时间分别为 n^ 和 ^n 要使前者快于后者 n至少要多大?
◆
◇ 最简单最笨的办法就是拿自然数去代呗 假定n取为 则前者的值是 后者的值是 小于前者 那我们就加个 用 代入得前者为 后者为 已经比前者大但相差不多 那我们再减个 用 代入得 前者为 后者为 又比前者小了 所以结果得出来就是n至少要是
设n为正整数 利用大 O 记号 将下列程序段的执行时间表示为n的函数
( ) i= ; k=
while(i
k=k+ *i;i++;
◆ T(n)=n
∴ T(n)=O(n)
◇ 这个函数是按线性阶递增的
( ) i= ; k= ;
do
k=k+ *i; i++;
while(i<> ◆ T(n)=n
∴ T(n)=O(n)
◇ 这也是线性阶递增的
( ) i= ; j= ;
while(i+j<=n)
if (i
else i++;
◆ T(n)=n/
∴ T(n)=O(n)
◇ 虽然时间函数是n/ 但其数量级仍是按线性阶递增的
( ) x=n; // n>
while (x>=(y+ )*(y+ ))
y++; ◆ T(n)=n /
∴ T(n)=O(n / )
◇ 最坏的情况是y= 那么循环的次数是n / 次 这是一个按平方根阶递增的函数
( ) x= ; y= ;
while(y> )
if(x> )
x=x ;y ;
else x++; ◆ T(n)=O( )
相关参考
简述下列概念数据数据元素数据类型数据结构逻辑结构存储结构线性结构非线性结构●数据指能够被计算机识别存储和加工处理的信息载体●数据元素就是数据的基本单位在某些情况下数据元素也称为元素结点顶点记录数据元素
知识大全 严蔚敏《数据结构(c语言版)习题集》算法设计题第一章答案
说明: 本文是对严蔚敏《数据结构(c语言版)习题集》一书中所有算法设计题目的解决方案主要作者为kaoyan计算机版版主一具以下网友:siice龙抬头iamkentzamesbirdthinkin
第一章 绪论答案 一选择题 BCCBBDCCDDACDDACAC 二判断题 ××××√××√×××√× 三.填空题 .数据元素 数据元素间关系 .集合
structnode intyearmonthday;; typedefstruct intnum;//帐号 charname[];//姓名 structnodedate;//开户年月日
.算法的时间复杂度和空间复杂度 .()逻辑结构()物理结构()操作(运算)()算法 .()有穷性 ()确定性()可行性 .()n+ ()n ()n(n+)/&n
.第一层FOR循环判断n+次往下执行n次第二层FOR执行次数为(n+(n)+(n)+…+)第三层循环体受第一层循环和第二层循环的控制其执行次数如下表 i= &n
O(n) ①() () ()f(mn) ()n ② n(n)/ 四.应用题 .数据结构是一门研究在非数值计算的程序设计问题中
本章介绍的是存储在外存上的数据结构(文件)的有关概念各种文件的特点组织方法及查询和更新操作我们只要对它们有一些了解就可以了本章不是重点 一文件的基本概念(识记) 对数据结构来说文件是性质相同的
()由斐波那契数列的定义可得 Fn=Fn+Fn =Fn+Fn =Fn+Fn =Fn+Fn =Fn+Fn …… =pF+qF 设Fm的执行次数为Bm(m=…n)由以上等式可知Fn被执
.D是数据元素的有限集合S是D上数据元素之间关系的有限集合 .数据结构这一术语有两种含义一是作为一门课程的名称二是作为一个科学的概念作为科学概念目前尚无公认定义一般认为讨论数据结构要包括三个方面