小结
(1)数据结构是相互之间存在一种或多种特定关系的数据元素的集合。数据是由数据元素组成的,数据元素可以由若干个数据项组成,数据元素是数据的基本单位,数据项是数据的最小单位。
(2)数据结构一般包括数据逻辑结构、数据存储结构和数据运算三个方面。数据运算包括定义(运算功能描述)和实现两个层面。
(3)数据的逻辑结构分为集合、线性结构、树状结构和图形结构。树状结构和图形结构统称为非线性结构。
(4)数据的存储结构分为顺序存储结构、链式存储结构、索引存储结构和哈希(散列)存储结构。
(5)设计数据的存储结构时,既要存储逻辑结构中的每个元素,还要存储元素之间的逻辑关系。同一逻辑结构可以设计相对应的多个存储结构。
(6)描述一个问题的抽象数据类型由数据逻辑结构和抽象运算组成。
(7)算法是对特定问题求解步骤的一种描述,它是指令的有限序列。运算实现通过算法来表示。
(8)算法具有有限性、确定性、可行性、输入性和输出性5个重要特性。
(9)算法满足有限性,程序不一定满足有限性。算法可以直接用计算机程序来描述,但算法必须用程序设计语言来描述是错误的。
(10)当用C/C++语言描述算法时,通常算法采用C/C++函数的形式来描述,复杂算法可能需要多个函数来表示。
(11)在设计一个算法时,先要弄清哪些是算法输入,哪些是要求解的结果即算法输出,通常将它们设计成函数形参,求解的结果可以作为引用型参数或函数返回值。
(12)对于一个算法给定的条件,需要判断其有效性,通常当条件有效并正确执行时返回1(真),否则返回0(假)。
(13)算法分析包括时间复杂度和空间复杂度分析,其目的是分析算法的效率以求改进。
(14)在分析算法的时间复杂度时,通常选取算法中的基本运算,求出其频度,取最高阶并置系数为1作为该算法的时间复杂度。
(15)通常算法是建立在数据存储结构之上的,设计好的存储结构可以提高算法的效率。
(16)求解问题的一般步骤是,建立其抽象数据类型,针对运算的实现设计出合理的存储结构,在此基础上设计尽可能高效的算法。