数据结构之概述
文章目录
一、基本数据结构
1.线性数据结构
~线性表
~栈
~队列
~串
~数组
~广义表
2.非线性数据结构
~树
~图
二、数据结构的概念
计算机解决一个问题的步骤:
1.具体问题抽象为数学模型
实质为分析问题,提取操作对象,找出操作对象之间的联系,用数学语言描述。这就是数据结构在计算机解决实际问题的重要作用。
2.设计算法
3.编程、调试、运行。
三、数据结构的应用解释
1.集合
数据元素同属一个集合外,无其他任何关系。
2.线性表的应用
(1)操作对象:学生信息(姓名,年龄等)。
(2)操作算法:插入、删除。
3.树的应用
(1)操作对象:各种棋局状态。
(2)操作对象:走棋(选择下一步棋的策略)
4.图的应用
(1)操作对象:有边的顶点。
(2)操作算法:判断是否有边,最优路径。
四、数据结构的基本概念
1.数据
能输入到计算机且能被计算机处理的各种符号的集合。
~信息载体。
~对客观事物的符号化表示。
~能被计算机识别、存储和加工。
包括:
(1)数值型数据
(2)非数值型数据(文件、图像、声音,但通过编码的方式最终转化为数值型)
2.数据元素、数据项
1.数据元素
数据的基本单位,通常作为一个整体来考虑和处理。
2.数据项
构成数据元素的不可分割的最小单位。
3.三者关系
数据>数据元素>数据项
3.数据对象
性质相同元素的集合,是数据的一个子集。
4.数据结构内容
(1)逻辑结构:数据元素之间的逻辑关系。
(2)存储结构:数据元素及关系在计算机内存中的表示。
(3)数据的运算与实现,对数据元素施加的操作以及这些操作在相应的存储结构上的实现。
5.数据结构层次
1.逻辑结构
~描述数据元素之间的逻辑关系
~与数据的存储无关,独立于计算机
~是从具体问题抽象出来的数据模型
2.存储结构(物理结构)
~顺序存储结构、链式存储结构、索引存储结构、哈希散列存储结构
①顺序存储结构
采用一块连续的存储单元存放所有数据元素,相邻的元素在存储结构上的位置也是相邻。存储效率高,可实现随机存取。但不便于对数据元素的插入与删除。
struct {
int stuid;
char name[8];
char sex[2];
}Stud[4];
②链式存储结构
每个数据源数采用一个内存结点存储,每一个结点都是单独分配的,所有的节点地址不一定连续的。为了表示逻辑关系,给每一个结点附加指针域,通过指针将所有的结点连接在一起。
优点便于数据元素修改,但空间利用率低,不能对元素进行随机读取。
typedef struct Studnode{
int stuid;
char name[8];
char sex[2];
struct Studnode* next;
}StudType;
③索引存取结构
在存储数据元素信息的同时还建立附加索引表。存储所有元素信息的表成为主数据表,其中每一个数据元素有一个关键字和对应的存取地址。索引表的每一项为索引项,为:关键字+地址。关键字唯一表示一个数据元素,地址对应相关数据元素在主数据表中的存储地址。
其优点查找效率高,缺点是增加内存开销。
④哈希(散列)存储结构
数据元素的关键字通过函数计算出内存地址。
其查找效率高,但不存储数据元素之间的关系。
~数据元素及其关系在计算机内存中的存储方式。
~数据结构在计算机中的表示。