数据结构绪论
数据结构(data structre)是计算机中存储,组织数据的方式。
数据结构是一种具有一定逻辑关系,在计算机中应用某种存储结构,并且封装了相应操作的数据元素集合。它包含了逻辑关系,存储关系和操作。
数据结构主要的研究的问题就是如何合理的组织数据,高效的处理数据。
常见的数据结构
- 栈:一种特殊的线性表,遵循后进先出的原则。
- 队列:也是一种特殊的线性表,先进先出。
- 数组:
基本概念和术语
- 数据(Data):是客观事物的符号表示,是所有能输入到计算机中并被计算机处理的符号的总称。包括数学计算中的整数和小数,字符,被多媒体程序处理过的图形,音频等通过特殊编码定义后的数据。
- 数据元素(Data Element):是数据的基本单位,在计算机中通常作为一个整体处理和考虑。在某些情况下,也被称为记录,元素等。
- 数据项(Data Item):是组成数据元素,具有独立含义,不可分割的最小单位。例如学生信息表中的性别,学号等。
- 数据对象(Data Object):是性质相同的数据元素的集合,是数据的一个子集。
数据结构
数据结构是相互之间存在一种或多种特定关系的数据元素的集合。
数据结构包括逻辑结构和存储结构两个层次
逻辑结构
数据的逻辑结构是从逻辑关系上描述数据,它与数据的存储方式无关,是独立于计算机的。因此,数据的逻辑结构可以看成是从具体问题抽象出来的数据模型。
数据的逻辑结构有两个要素:一是数据元素,二是关系。
根据数据元素的关系的不同特性,有四种数据结构:
存储结构
存储结构就是数据对象在计算机中的存储表示,也叫做物理结构。存储在计算机中时要同时存储数据对象的数据和关系,数据元素在计算机中用一个节点表示。
数据元素在计算机中有两种基本的存储结构:一是顺序存储方式,二是链式存储方式。
顺序存储结构是借助元素在存储器中的相对位置来表示元素之间逻辑关系的一种存储方式。通常借助程序设计语言的数组类型来描述。
链式存储方式则在节点中附加指针字段,用于存放后续元素的地址,来表示节点的关系。所以通常借用程序设计语言的指针类型来描述。
数据类型和抽象数据类型
数据类型(data type) 是高级程序设计语言的一个基本概念,它是一个值的集合和在这个值集上的操作的总称。
抽象就是抽取出实际问题的本质。
抽象数据类型(abstract data type,ADT) 一般指有用户定义,表示实际问题的数学模型,以及定义在这个数学模型上的操作的总称,具体包括三个部分:数据对象,数据对象之间关系的集合,以及数据对象的基本操作的集合。
ADT抽象数据类型名{
数据对象:(数据对象的定义〉
数据关系:(数据关系的定义〉
基本操作:(基本操作的定义〉
} ADT抽象数据类型名
算法和算法分析
数据结构与算法之间存在着本质联系,在某一类型数据结构上,总要涉及其上施加的运算,而只有通过对所定义运算的研究,才能清楚理解数据结构的定义和作用;在涉及运算时,总要联系到该算法处理的对象和结果的数据。在“数据结构”中,将遇到大量的算法问题,因为算法联系着数据在计算过程中的组织方式,为了描述实现某种操作,常常需要设计算法,因而算法是研究数据结构的重要途径。
算法是为了解决某类问题而规定的一个有限长的操作序列。算法具有五个特性:有穷性、确定性、可行性、输入和输出。一个算法的优劣应该从以下四方面来评价:正确性、可读性、健壮性和高效性。