数据结构概念
基本概念
- 数据
计算机程序处理对象,能被计算机识别并输入给计算机处理的符号集合(计算机中可操作对象,能被计算机识别并处理)
简单:整数,实数,字符串等(数值类型可以进行数值运算,非数值类型可以通过编码编程字符数据进行处理)
复杂:视频,音频,计算机程序,web等(编译生成exe文件时计算机程序即为处理对象) - 数据元素(顶点,结点等)
数据元素是组成数据的,有一定意义的基本单位,常做整体看或作记录 - 数据项
数据不可分割的最小单位,数据元素由若干数据项组成(数据元素是分析问题的着眼点) - 数据对象
具有相同的性质的数据元素的集合,是数据的子集。
结构
数据->数据对象->数据元素->数据项
数据结构
由若干数据元素按照一定方式构成的复合数据以及作用在其上的函数或运算
数据的逻辑结构
- 定义:数据结构及其上的数据约束关系
- 抽象的角度:数据元素-结点 数据元素之间的关系-边
- 形式化定义:L=(N,R)(logic)N(有限的结点集合)R(结点上的二元关系的集合)
分类(线性结构,非线性结构)
- 集合结构(空关系)
各数据元素之间没有联系,每个数据元素之间是平等的 - 线性结构(线性关系)
任何一个数据元素只有一个前驱结点和后继结点,一个只有前驱or后继 - 树形结构(父子关系,层次关系)一对多
有一个数据元素没有后继节点,其余数据元素只有一个前驱结点但可以有多个后继结点 - 图结构(相邻关系,网络关系)多对多
数据元素可以有多个前驱结点和后继结点
数据的存储结构
- 定义:数据及其逻辑关系在计算机中的存储
- 考虑两大问题:1.数据的存储方式 2.数据的逻辑结构的存储方式
分类
- 顺序存储
数据元素连续的存储在内存空间中,数组的逻辑顺序即有物理存储空间的连续性保证
如数组 采用下标索引,设数组 a[n], 访问第k个元素:a+sizeof(type)*k;
优点:基于下标检索,随机检索速度快
缺点:1、删除,插入等维护性操作不便 2、出现存储碎片(碎片整理) - 链接存储
数据元素在内存空间中的存储是随机的(可连续也可不连续),每一个数据元素包括数据项和指向下一项的指针
优点:1、维护操作便利 2、处理存储碎片
缺点:检索速度慢 - 索引存储
将指向数据元素的指针存储在一系列连续的内存空间中,和链接存储的占用空间一致但是融合了顺序存储和链接存储的优点(顺序+链接) - 散列存储
在索引存储上又添加一个散列函数,通过散列函数查找保存数据元素的指针,通常用于关键字检索(关键字作为自变量,由散列函数求出因变量即为存放数据元素地址的下标索引(链接+索引) - 组合存储
对数据结构的操作
- 插入
- 删除
- 查找
- 修改
- 排序
- 遍历