数据结构和算法
数据结构:数据的特性和数据之间存在的关系;
-
数据结构常用名词和术语:
- 数据是人们利用文字,数字等符号对现实世界的事物及其活动所做的描述
- 数据元素简称元素,是数据的基本单位,通常作为一个整体进行考虑和处理
- 关键项
- 数据处理:对数据的操作过程
- 数据结构: 数据以及相互之间的挂心
- 数据类型:对数据的取值范围、每一个数据的结构以及允许施加操作的一个描述
- 数据对象:性质相同的数据元素的集合,是数据的一个子集;
- 算法、线性结构、集合、图、树等;
-
算法描述:
算法就是解决特定问题的方法;应该具有五个特性:- 有穷性
- 确定性
- 可行性
- 输入
- 输出
-
算法评价:
- 正确性
- 可读性
- 健壮性
- 效率和低存储量需求
一个算法的复杂性的高低体现在运行该算法所需的计算机资源的多少上,所需资源越多,算法的复杂性越高;其中最重要的就是算法的时间复杂性和空间复杂性
线性表
线性表是最常用也是最简单的一种数据结构,一个线性表是n个数据元素的有限序列;
线性表的抽象数据类型包括了数据对象和数据关系两大部分;
线性表的存储结构有顺序,链接、散列等多种方式;
顺序存储结构就是用一组地址连续的存储单元依次存储线性表中的所有元素。只要确定了线性表的起始位置,皆可以获取线性表的任意元素的存储位置;
链式存储结构的特点是可以用一组任意的存储单元俩存储线性表中的元素;这些存储单元可以连续,也可以不连续;
栈和队列
- 栈是一种特殊的线性表,是限定尽在表尾进插入和删除操作的线性表。进行插入和删除的哪一端称为栈顶,另一端称为栈底;栈的插入和删除分别称为进站和出栈;
栈的一个典型应用实例是 表达式求值,任何一个表达式都是由操作数、运算符,界限符组成;
- 队列是一种只允许在一端进行插入,在另一端进行删除的线性表,它是一种操作受限的线性表。在表中只允许进行插入的一端称为队尾,只允许删除的一端称为队头;队列也称为先进先出表;
树和二叉树
树是n个结点的有限集。n=0的数为空树;
由m棵不想交的树构成的集合称为森林。
二叉树是每个节点至多只有两颗子树,在二叉树中不存在度大于2的节点,并且二叉树有左右之分,次序不能任意颠倒;
常用的树的存储结构有三个:
- 双亲表示法
- 孩子表示法
- 孩子兄弟表示法
树的遍历方式有三种:
-
前序遍历: 首先访问根节点,再依次按前序遍历访问根节点的每一颗子树;
-
后序遍历:按后序遍历的方式访问根节点的每一颗子树,然后再访问根节点;
-
层次遍历:首先访问第一层的根节点,然后左右依次访问第二层的所有节点…
- 前序遍历 (根左右)
- 中序遍历 (左根右)
- 后序遍历 (左右根)
图
图是由一个非空的顶点集合和一个描述顶点之间多对多关系的边集合组成的一种数据结构;