基本概念和术语
数据
数据是信息的载体,是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。数据是 计算机程序加工的原料 。
数据元素
数据元素是数据的基本单位,通常作为一个整体进行考虑和处理。一个数据元素可由若干 数据项 组成,数据项是构成数据元素的不可分割的最小单位。
【例】学生记录就是一个数据元素,它由学号、姓名、性别等数据项组成。
数据对象
数据对象是具有相同性质的数据元素的集合,是数据的一个子集。
【例】整数数据对象是集合
。
数据类型
数据类型是一个值的集合和定义在此集合上的一组操作的总称。
原子类型
不可再分解的基本数据类型,直接由编程语言或硬件支持。
特点:
- 存储单一值,无内部结构。
- 操作是原子性的(不可分割)。
- 通常对应 CPU 直接支持的运算。
常见示例:
- 整型(int):如
int x = 10; - 浮点型(float/double):如
double pi = 3.14; - 字符型(char):如
char c = 'A'; - 布尔型(bool):如
bool flag = true;
结构类型
由原子类型或其他结构类型组合而成的复合数据类型。
特点:
- 具有内部结构(多个成员/元素)。
- 成员可以是原子类型或其他结构类型。
- 操作需考虑整体与部分的关系。
常见示例:
- 数组(Array):同类型元素的集合,如
int arr[5] = {1, 2, 3}; - 结构体(Struct):异构成员的组合,如:
c
struct Student {
char name[20];
int age;
};- 类(Class):C++/Java等语言中,包含数据与方法的扩展结构体。
- 链表/树:通过指针或引用动态组织的结构。
抽象数据类型
关注数据操作逻辑而非实现细节,是一种数学模型。
特点:
- 封装性:隐藏内部实现,仅通过接口访问。
- 行为定义:由操作(方法)而非存储结构决定。
- 多实现:同一ADT可有不同底层实现(如栈可用数组或链表实现)。
常见示例:
- 栈(Stack):LIFO操作(push, pop)。
- 队列(Queue):FIFO操作(enqueue, dequeue)。
- 列表(List):有序集合,支持插入/删除。
- 字典(Dictionary):键值对映射。
数据结构
数据结构是相互之间存在一种或多种特定关系的数据元素的集合。在任何问题中,数据元素都不是孤立存在的,它们之间存在某种关系,这种数据元素相互之间的关系称为 结构(Structure)。
| 要素 | 描述 | 类型 |
|---|---|---|
| 逻辑结构 | 数据元素之间的逻辑关系 | 线性、树形、图形 |
| 存储结构 | 数据在计算机中的存储方式 | 顺序、链式、索引 |
| 数据运算 | 对数据进行的各种操作 | 插入、删除、查找 |
数据的逻辑结构和存储结构是密不可分的两个方面,一个算法的设计取决于所选定的逻辑结构,而算法的实现依赖于所采用的存储结构。