学习数据结构,期末总结!
数据结构
数据结构是指相互之间存在一种或多种特定关系的数据元素的集合
数据结构通常有四类基本结构集合结构 线性结构 树形结构 图状或网状结构
算法的特性 有穷性确定性 可行性 输入 输出
一个好的算法应该具备的目标正确性 可读性 健壮性 高效率与低存量需求
线性表
线性表的基本操作:初始化求线性表的长度 取表元 按值查找 插入 删除
元素之间的关系线性关系
栈
栈是限制在表的一端进行插入和删除的线性表。
栈按“后进先出”的规则进行操作,所以栈又称为后进先出线性表
栈的基本操作 栈的初始化判栈空 入栈 出栈 读栈顶元素
队列
队列是一种“先进先出”的数据结构允许插入的一端叫队尾 允许删除的一端叫对头
队列的基本操作队列的初始化 入队操作 出对操作 读对头元素 判队空操作
串
串是由零个或多个任意字符组成的字符序列
串的基本运算 求串长串赋值 连接操作 求子串 串比较 子串定位 串插入 串删除
子串与主串 串中任意连续的字符组成的子序列称为该串的子串。包含子串的串相应的称为主串
子串的位置 子串的第一个字符在主串的序号
串相等 是指两个串的长度相等且对应字符都相等
串的存储结构 串的静态存储结构串的动态存储结构
字符串的模式匹配
BF算法 KMP算法 next函数
树
树的定义 树是n(n>=0)个有限数据元素的集合。n=0时,这棵树为空树。
树的表示方法 直观表示法嵌套表示法 广义表表示法 凹入表示法
基本术语
结点的度 节点所拥有的子树的个数称为该节点的度
叶节点 度为零的节点称为叶节点(终端节点)
分支节点 度不为零的节点称为分支节点(非终端节点)
树的度 树中各节点的最大值
节点的层数 树的根节点的层数为1,其余各节点的层数等于它的双亲节点层数加1
树的深度 树中所有节点的最大层数
有序树和无序树
森林
树的存储结构 双亲表示法孩子表示法 孩子兄弟表示法
树的遍历 前 后中(二叉树) 层次
二叉树
特点 每个节点至多只有二棵子树(二叉树中不存在度大于2的节点)
二叉树的性质(P145) 性质3☆
线索二茬树 二叉树的遍历 树、森林和二叉树的转换(P160)
哈夫曼树
图
基本概念
图是由一个非空的顶点和一个描述顶点之间的关系——边(或者是弧)的集合组成。
元素对应关系 多对多
什么是边? 无向图中,顶点之间的连线
图的存储结构 邻接矩阵 邻接表
图的遍历 深度优先搜索遍历广度优先搜索遍历
最小生成树 Prim算法 Kruskal算法
查找
查找就是在一组数据集合中找到满足某种条件的数据。
通常称用户查找的数据集合为查找表。
查找表中的数据属于同一类型,数据元素之间的关系完全松散。
根据查找表中的数据所执行的操作可将查找表非为静态查找表和动态查找表。
静态查找表式指查找过程中结构始终不变的查找表。
动态查找表是指其结构在查找过程中发生变化的表。
衡量查找算法效率的标准是平均查找长度。
静态查找的表示方法:
顺序查找、二分法查找、分块查找。
树表主要有二叉排序树、平衡二叉树、Bˉ树等。
平衡二叉树又称AVL树。它或者是一种空树或者是具有下列性质的二叉树:它的左子树和右子树都是平衡二叉树,且左子树和右子树的深度只差的绝对值不超过1。
平衡二叉树的调整:
LL型平衡旋转型、RR平衡旋转、LR型平衡旋转、RL型平衡旋转
排序
1.排序:是指将一组记录的任意序列按规定顺序重行排列。
2.排序的目的是便于查询和处理,提高解决问题的效率。
3.排序的方法分类(根据排序是存放数据的存储器分类):内部排序(插入排序(直接插入排序、Shell排序)、交换排序(冒泡排序、快速排序)、选择排序(直接选择排序、堆排序)、归并排序、基数排序),外部排序。
4.课本表10-1