数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关
目录
1.数据结构的基本术语
2.逻辑结构与存储结构
1.逻辑结构
2.存储结构
3.数据类型和抽象数据类型
数据(Data):数据是客观事物的符号表示,是所有能输入计算机程序处理的符号的总称。如数学计算中用到的整数和实数,文本编辑中用到的字符串,多媒体程序处理的图形、图像、声音及动画等通过特殊编码定义后的数据。
数据元素(Data Element):数据元素是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。在有些情况下,数据元素也称元素、记录等。数据元素用于完整地描述一个对象,如前一节示例中的一名学生记录,树中棋盘的一个格局(状态),以及图中的一个顶点等。
数据项(Data Item):数据项是组成数据元素的、有独立含义的、不可分割的最小单位。例如,学生基本信息中的学号、姓名、性别等都是数据项。
数据对象(Data Object):数据对象是性质相同的数据元素的集合,是数据的一个子集。例如:整数数据对象是集合N={0,1,,...},字母字符数据对象是{‘A’,‘B’,...,‘a’,‘b’,...,‘z’},学生基本信息表也可以是一个数据对象。由此可以看出,不论数据元素集合是无限集(如整数集),或是有限集(如字母字符集),还是有多个数据项组成的复合数据元素(如学生表)的集合,只要集合内元素的性质均相同,都可称之为一个数据对象。
(1)集合结构:数据元素之间除了“属于同一集合”的 关系外,别无其他关系。例如,确定一名学生是否为班级成员,只需要将班级看做一个集合结构。
(2)线性结构:数据元素之间存在一对一的关系。例如,在班级的管理体系中,班长管理多个组长,每位组长管理多名组员,从而构成树结构。
(3)树结构:数据元素之间存在一对多的关系。例如,在班级的管理体系中,班长管理多个组长,每位组长管理多名组员,从而构成树结构。
(4)图结构或网状结构:数据元素之间存在多对多的关系。例如,多为同学之间的朋友关系,任何两位同学是朋友,从而构成图结构和网状结构。
存储结构分为顺序存储结构和链式存储结构,其中顺序存储结构就是指各单位间的存储结构是顺序的类似一C语言中的数组,而链式存储结构中各存储结构之间是不连续的,通过首位地址相连,没错这个也类似于C语言中指针的概念,链式存储结构就类似于C语言中的链表。这里不做过多赘述。
1.数据类型(Data Type):数据类型是一个值的集合和定义在这个值集上的一组操作的总称。例如C语言中的整型变量,字符型等基本类型数据。而除了这些基本数据类型。还允许用户自己定义各种类型数据。例如数组、结构体、指针等。
2.抽象数据类型(Abstract Data Type,ADT):抽象数据类型的定义格式如下:
ADT 抽象数据类型名{
数据类型:<数据对象的定义>
数据类型:<数据关系的定义>
基本操作:<基本操作的定义>
}ADT 抽象数据类型名
其中数据对象和数据关系的定义采用数学符号和自然语言描述,基本操作的定义格式为:
基本操作名(参数表)
初始条件:<初始条件描述>
操作结果:<操作结果描述>
基本操作有两种参数:赋值参数职位操作提供输入值:引用参数以“&”打头,除可提供输入值外,还将返回操作结果。“初始条件”描述了操作执行之前数据结构和参数应满足的条件,若初始条件为空,则省略。“操作结果”说明了操作正常完成之后,数据结构的变化状况和应返回的结果。