1.2什么是数据结构
数据:对客观事物的符号表示,能够输入到计算机并被计算机处理的符号的总称。
数据元素:数据的基本单位,在计算机程序中作为一个整体来考虑和处理。比如一本书的信息,
数据项:数据不可分割的最小单位。一个数据元素由多个数据项组成。比如,一本书的信息(名称,出版社,价格...)等可看做一个数据元素,而其中的名称就可看做一个数据项。
数据对象:性质相同的数据元素的集合,是数据的一个自己。比如整数数据对象是集合N={...,-1,0,+1,....}。
数据结构:存在特定关系的数据元素的集合。数据元素之间的关系称为结构(逻辑结构,描述的是数据元素之间的逻辑结构)。四种基本结构:集合(除了属于同一个集合,没有其它关系),线性结构(结构中的数据元素存在一对一的关系),树形结构(结构中的数据元素存在一对多的关系),图状结构或网状结构(结构中的数据元素存在多对多的关系)。数据结构定义为:data structure=(D,S),即(数据元素的有限集,数据关系的有限集)。
物理结构(存储结构):数据结构在计算机中的表示(映射)。两种表示方法:顺序映像和非顺序映像。从而得到两种不同的存储结构:顺序存储(用数据元素在计算机中的存储位置表示逻辑关系)和链式存储(用数据元素在计算机中存储位置的指针表示逻辑关系)。
由于是在高级程序语言的层次上讨论数据结构的操作,所以就不直接在内存的角度来描述存储结构,而是借助高级语言提供的“数据类型”来描述。比如用一维数组来描述顺序存储结构,用指针描述非顺序存储结构。
数据类型:类型明显或隐含的规定了在程序执行期间变量和表达式的取值范围和操作,所以数据类型是一个值的集合和定义在这个值集的操作。引入数据类型原因:解释计算机内存中信息含义,让用户使用的时候不用关注底层硬件信息。
抽象数据类型(ADT):一个数学模型及定义在这个模型的的操作。抽象数据类型的定义仅仅取决于逻辑特性,与计算机内部结构无关。分类:原子类型(不可再分解),固定聚合类型(属于该类型的变量,其值由确定数目的成分按照某种结构组成),可变聚合类型(成分的数目不确定),多行数据类型(其值的成分不确定的数据类型,不同的类型,不确定的数目)。
1.4 算法和算法分析
算法的五个重要特性:输入、输出、确定性、正确性、无穷性。
好的算法要求:正确性、可读性、健壮性、效率和低存储。
算法效率的度量:时间复杂度和空间复杂度。T(n)=O(f(n)),除特别指明,都算最坏情况下的时间复杂度。S(n)=O(f(n))。