hola!大家好,新学期开始了,本学期我会在这个专栏进行数据结构与算法分析的学习经验分享和作业答案共享,本专栏是基于我在上课和课下所学的知识进行整理得出的。本人能力有限,难免会出现纰漏,希望大家可以指正。课本用的是西电出版社的数据结构,文章中的例子会用到青岛大学王卓老师b站视频中的相关例子和XDU党岚君老师课件中的相关例子,仅供学习参考,如有任何问题请联系我进行修改。
课程作业的参考答案我会放到:GitHub - XDUgaile/Data-Structure
1. 数据结构
(1)数据是对客观事物的符号表示,如图像、声音等。
(2)数据元素是数据的基本单位。
(3)数据项是构成数据元素的不可分割的最小单位。
一个数据元素可由若干个数据项组成,例如,一位学生的信息记录为一个数据元素,它是由学号、姓名、性别等数据项组成。
(4)数据对象是具有相同性质的数据元素的集合。
(5)数据结构是相互之间存在一种或多种特定关系的数据元素的集合。
数据结构包括三方面的内容:逻辑结构、存储结构和数据的运算。
数据结构的形式定义为:数据结构是一个二元组
其中: 是数据元素的有限集, 是 上关系的有限集。
题 1.以下说法正确的是(
)。
A.数据项是数据的基本单位
B.数据元素是数据的最小单位
C.数据结构是带结构的数据项的集合
D.数据元素可由若干数据项组成
答案:D
数据的逻辑结构有两大类:
线性结构
线性结构的逻辑特征是:有且仅有一个开始结点和一个终端结点,且所有结点都最多只有一个直接前趋和一个直接后继。
非线性结构
非线性结构的逻辑特征是一个结点可能有多个直接 前趋和直接后继。
数据的存储结构
顺序存贮方法
该方法是把逻辑上相邻的结点存贮在物理位置上相邻的存贮单元里,结点间的逻辑关系由存贮单元的邻接关系来体现。由此得到的存贮表示称为顺序存贮结构。
该方法主要应用于线性的数据结构,非线性的数据结构
链接存贮方法
该方法不要求逻辑上相邻的结点在物理位置上亦相邻,结点间的逻辑关系是由附加的指针字段表示的。由此得到的存贮表示称为链式存贮结构
索引存贮方法
该方法建立附加的索引表指示数据的存储位置。
索引表中的每一项称为索引项,一般形式是: (关键字,地址)
– 关键字是能惟一标识一个结点或一组结点的那些数据项
– 地址是存储数据的位置
散列存贮方法
该方法的基本思想是根据结点的关键字直接计算出该结点的存贮地址。
•
Address=H(KeyWord)
题 1.在顺序存储、链式存储、索引存储和散列存储这 种存储方式中,最基本、最常用的两
种存储结构是()和() 。
答案:顺序存储,链式存储
2. 算法
算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中的每条指令表示一个
或多个操作。此外,一个算法还具有下列5个重要特性:
(1)有穷性。一个算法必须总是在执行有穷步后结束,且每一步都是在有穷时间内完成。
(
2)确定性。算法中每条指令必须有确切的含义,且相同的输入只能得到相同的输出。
(
3)可行性。算法中描述的操作都可以通过已经实现的基本运算执行有限次来实现。
(
4)输入。一个算法有零个或多个输入。
(
5)输出。一个算法有一个或多个输出。
题 1.以下不属于算法特性的是(
)。
A.可行性
B.输入
C.确定性
D.健壮性
答案:D
通常设计一个“好”的算法应考虑达到以下目标:
(1)正确性。算法应能够正确地求解问题。
(2)可读性。算法能具有良好的可读性,以帮助人们理解。
(3)健壮性。输入非法数据时,算法能适当地做出反应或进行处理,而不会产生莫名其妙的输出结果。
(4)效率与低存储量需求。效率是指算法执行的时间,存储量需求是指算法执行过程中所需的最大存储空间。
算法效率的度量是通过时间复杂度和空间复杂度来描述的。
一个语句的频度是指该语句在算法中被重复执行的次数。
算法中所有语句的频度之和记为T(n)
,它是该算法问题规模 的函数,时间复杂度主要分
析的数量级。