C1_绪论
数据结构的基本概念
基本概念和术语
-
数据:信息的载体,是描述客观事物属性的数,字符及所有能输入到计算机中并被计算机程序识别和处理的符号集合
-
数据元素:数据元素是数据的基本单位,通常作为一个整体进行考虑和处理。一个数据元素由若干个数据项组成。
-
数据项:构成数据元素的不可分割的最小单位
-
数据对象:具有相同性质的数据元素的集合,是数据的子集。例如:整数数据对象
数据>数据对象>数据元素>数据项
-
数据类型:一个值的结合和定义在此集合上的一组操作的总称
- 原子类型:其值不可再分的数据类型 int
- 结构类型:其值可以再分解尾若干成分(分量)的数据类型 struct
- 抽象数据类型:抽象数据组织及与之相关的操作 class
-
抽象数据类型(ADT)
- D数据对象:
- S数据关系
- P基本操作集
- 抽象数据类型的定义仅取决与它的一组逻辑特性,与计算机内部如何表示无关
-
数据结构
- 一种或多种特定关系的数据元素集合
- 逻辑结构:设计
- 存储结构:实现
- 数据的运算:操作
数据结构三要素
- 逻辑结构
- 线性结构:一对一
- 一般线性表
- 受限线性表
- 栈和队列
- 串
- 线性表推广
- 数组
- 广义表
- 非线性结构
- 集合:同属于一个集合
- 树形结构:一对多
- 一般树
- 二叉树
- 图形结构:多对多
- 有向图
- 无向图
- 线性结构:一对一
- 存储结构
- 顺序存储
- 特点:逻辑相邻->物理相邻
- 优点:随机存取;每个元素占用空间少
- 缺点:只能使用相邻存储单元;可能产生较多的外部碎片
- 链式存储
- 特点:不要求对应相邻,借助指针表示逻辑关系
- 优点:不会出现碎片;充分利用所有存储单元
- 缺点:指针占用额外存储空间;只能实现顺序存取
- 索引存储
- 特点:建立附加索引表,表中为索引项(关键字,地址)
- 优点:检索速度快
- 缺点:索引表占用较多存储空间;增删数据需要修改索引表,花费较多时间
- 散列/Hash存储
- 特点:根据关键字计算该元素存储地址
- 优点:检索,增加和删除操作都很快
- 缺点:若是散列函数不好,则可能出现元素存储单元冲突,而解决冲突会增加时间和空间开销
- 顺序存储
- 数据的运算
- 定义:逻辑结构,指出功能
- 运算:存储结构,具体操作步骤
算法和算法评价
算法的基本概念
- 算法:对特定问题求解步骤的一种描述,它是指令的有限序列,其中每条指令表示一个或多个操作
- 有穷性:有穷步结束,每步有穷时间
- 确定性:每条指令由确切含义,无二义性,即相同输入得到相同输出
- 可行性:算法可行,可通过有限次基本运算执行
- 输入:0~n个输入
- 输出:1~n个输出
- 好算法目标:
- 正确性:正确求解问题
- 可读性:便于人们理解
- 健壮性:输入非法数据时,算法能做出适当反应或进行处理
- 效率与低存储量需求:时间/空间复杂度低
算法效率的度量
- 时间复杂度(与问题规模n有关)
- T(n)=O(f(n))
- 加法:取复杂度大的
- 乘法:直接乘(循环体嵌套)
- 空间复杂度(与问题规模n有关)
- S(n)=O(g(n))
- 固定空间:指令,常数,变量和输入数据
- 变化空间:对数据进行操作的工作单元和存储为实现计算所需的一些信息的辅助空间
- 算法原地工作:算法所需辅助空间为常量级的,即O(1)