第1章 数据结构绪论
- 一、数据结构的起源
- 二、基本概念和术语
- 1、数据
- 2、数据元素
- 3、数据项
- 4、数据对象
- 5、数据结构
- (1)逻辑结构
- ①集合结构
- ②线性结构
- ③树形结构
- ④图形结构
- (2)物理结构(存储结构)
- ①顺序存储结构
- ②链式存储结构
- 6、数据类型
- 7、抽象数据类型
一、数据结构的起源
数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学课。
程序设计 = 数据结构 + 算法
二、基本概念和术语
1、数据
数据
:是描述客观客观事物的符号,是计算机中可以操作的对象,是能被计算机识别并输入给计算机处理的符号集合。- 除了比较常见的数值型数据外,还有字符、声音、图像、视频等非数值型数据。
- 数据具备的两个前提:一是可以输入到计算机中,二是能够被计算机程序处理
- 随着互联网技术和社会的发展,数据量越来越大,也因此有了大数据的说法,从而诞生了大数据技术。
2、数据元素
数据元素
:是组成数据并且有一定意义的基本单位,在计算机中通常作为一个整体进行处理。也被称为记录。- 比如人类,人就是数据元素。
3、数据项
数据项
:一个数据元素可以由若干个数据项组成。- 比如人这个数据元素,可以有眼睛、耳朵等数据项,也可以有姓名、年龄等数据项。一个数据元素具体有哪些数据项,由所开发的系统决定。
- 数据项是数据不可分割的最小单位,但是真正讨论问题时,着眼点是数据元素。
4、数据对象
数据对象
:是性质相同的数据元素的集合,是数据的子集。- 若不同人(数据元素)都具有姓名和年龄数据项,则这些数据元素的集合就是数据对象。
- 实际应用中,处理的数据元素通常具有相同的性质。
5、数据结构
数据结构
:是相互之间存在一种或多种特定关系的数据元素的集合。- 按照视点不同,可将数据结构分为逻辑结构和物理结构。
(1)逻辑结构
数据对象中数据元素之间的相互关系(针对具体问题)。是为了解决某个具体问题而选择一个合适的数据结构来表示数据元素之间的逻辑关系。
①集合结构
数据元素属于同一个集合,其他没有任何关系。
②线性结构
数据元素是一对一的关系。
③树形结构
数据元素存在一对多的关系。
④图形结构
数据元素是多对多的关系。
(2)物理结构(存储结构)
数据的逻辑结构在计算机中的存储形式(面向计算机)。
①顺序存储结构
顺序存储结构
:把数据元素存放在地址连续的存储单元中,数据之间的逻辑关系和物理关系是一致的。- 数组就是一种顺序存储结构。
int a[10];
定义了一个a数组,相当于在内存中开辟了一段连续空间,分为十个小空间,每一个小空间的内存地址是连续的,且用于存储int类型的数据。
②链式存储结构
链式存储结构
:把数据元素存放在任意的存储单元中,这样的存储单元可以是连续的,也可以是不连续的。- 链表就是一种链式存储结构。一个链表包含若干个结点,每一个结点存储数据和一个指针,指针指向下一个结点的内存地址。
6、数据类型
数据类型
:指一组性质相同的值的集合及定义在此集合上的一些操作的总称。- 在C语言中,按照取值的不用,可将数据类型分为两类。
(1)原子类型:不可以再分解的基本类型,整型、实型、字符型等。
(2)结构类型:由若干个类型组合而成,可以再分解。
- 整型数组为组合类型,由若干个整型组合而成。
7、抽象数据类型
抽象数据类型(Abstract Data Type,ADT)
:一个数学模型及定义在该模型上的一组操作。- 抽象数据类型的定义仅取决于它的一组逻辑特性,与其在计算机内部的表示和实现无关。
- 已经定义与实现的数据类型。
//int整型就是一种抽象数据类型,并且已经定义与实现
int i = 10;
- 自定义的数据类型。
//point也是一种抽象数据类型,可以实例化出具体的数据对象
class point {
int x;
int y;
int z;
}
- 抽象数据类型体现了程序设计中问题分解、抽象和信息隐藏的特性。
- 抽象数据类型的标准格式
ADT 抽象数据类型名
Data
数据元素之间逻辑关系的定义
Operation
操作1
初始条件
操作结果描述
操作2
······
······
操作n
······
endADT