基础名词解释
数据
:程序的操作对象,用于描述客观事物
,有以下两个特点
- 可以
输入到计算机
- 可以
被计算机处理
数据元素
:组成数据对象的基本单元
数据项
:一个数据元素由若干数据项组成数据对象
:性质相同
的数据元素
的集合
,类似于数组
以上4种名词之间的关系如下图所示:
结构
:数据元素之间不是独立
的,存在特定的关系
,这些关系即是结构
数据结构
:指的是相互之间存在一种或多种特定关系
的数据元素
的集合
算法
:对特定问题求解步骤
的一种描述
程序设计
= 数据结构 + 算法
基本概念
逻辑结构 & 物理结构
一般从两个视角
对数据进行描述,一个是逻辑结构
,一个是物理结构
逻辑结构
:描述的是数据与数据
之间的逻辑关系
物理结构
:描述的是数据
在内存
中存储的形式
逻辑结构
逻辑结构主要有以下4种:
集合结构
:集合中的所有元素除了同属于一个集合
外,他们之间没有其他关系
,如下图所示
线性结构
:数据之间的关系是一对一
的,所有符合一对一
的都是线性结构,如下图所示
数组
、链表
是线性结构
队列
、栈
是特殊线性结构
,区别在于读取方式
队列
是先进先出
,即FIFO
栈
是先进后出
,即FILO
字符串
是特殊线性结构
,存储内容只能是字符串
树形结构
:数据之间的存在一对多
的层次关系,如下所示
二叉树
、B+
、B-
、红黑树
、哈西曼树
都是属于树形结构图形结构
:数据之间存在多对多
的关系,如下图所示
物理结构
数据的物理结构
就是数据存储在磁盘中的方式
,这里的磁盘
指的是计算机的内存
,主要研究的是数据结构在计算机
中的实现方式
,包括数据结构中的元素的表示及元素间关系的表示,有以下两种
顺序存储结构
:逻辑
上相邻
的数据元素,物理
存储位置也相邻
,顺序表的存储空间
需要预先分配
,且存储空间是一段的连续的内存
,顺序存储结构如下图所示
- 优点
方法简单,易实现
,因为在各种高级语言中都有数组
- 顺序存储结构具有
随机访问
的特点
- 缺点
- 顺序表中做
插入/删除
操作时,需要进行大量的数据移动,因此对n较大
的顺序表效率低
- 需要
预先分配
空间,如果空间预估过大
,会导致顺序表后面的大部分空间闲置,浪费内存
,如果预估过小
,又会造成溢出
链式存储结构
:逻辑上相邻
的数据元素,其物理存
储位置不一定相邻
,它使用指针实现元素之间的逻辑关系
,且链表的存储空间
是动态分布
的,链式存储结构
如下图所示
- 优点:
不需要提前开辟
一段连续的空间,其空间是动态分配
的插入、删除操作方便
,只需要改变指针的指向,不需要移动数据元素
- 缺点
- 链表
不能随机存取
元素,如果在链式存储中遍历,需要遍历所有的元素