数据结构
只想开飞机的患者
这个作者很懒,什么都没留下…
展开
-
最小生成树
目录Kruskal算法Prim算法构造最小生成树的方法:Kruskal算法和Prim算法Kruskal算法算法过程:任给一个有n个顶点的连通网络N={V, E},首先构造由n个顶点组成、不含任何边的图T={V, 空集},其中每个顶点自从一个连通分量。不断从E中取出权值最小的一条边,若该边的两个端点来自不同的连通分量,则将此边加入到T中。重复至所有顶点在同一个连通分量上为止。伪代码描述T ...原创 2019-10-22 23:03:28 · 157 阅读 · 0 评论 -
并查集
目录并查集的定义并查集的存储和实现并查集的定义支持三种操作:Union(Root1,Root2):把子集合Root2并入集合Root1中。要求Root1和Root2互不相交,否则不执行合并。Find(x):搜索单元素x所在的集合,并返回该集合的名字。UFSets(s):构造函数,将并查集中s个元素初始化为s个只有一个单元素的子集合。并查集的存储和实现并查集中需要两种数据类型的参数...原创 2019-10-22 22:30:38 · 112 阅读 · 0 评论 -
图的概念和存储
目录基本概念存储结构图的邻接矩阵表示图的邻接表表示图的邻接多重表表示基本概念完全图:由n个顶点组成的无向图中,若有 n(n-1)/2条边,则称为无向完全图。度:与顶点关联的边数。连通图与连通分量:在无向图中,若从点v1到v2有路径,则称顶点v1和v2是连通的。如果图中任意一对顶点都是连通的,则称此图是连通图。非连通图的极大连通子图叫做连通分量。存储结构图的邻接矩阵表示所有顶点的信息组...原创 2019-10-22 21:41:15 · 135 阅读 · 0 评论 -
AVL树和红黑树
目录AVL树的插入红黑树(特殊的二叉搜索树)AVL树可以是空树或者具有下列性质的二叉搜索树:左右子树都是AVL树,且左子树和右子树的高度之差的绝对值不超过1。AVL树的插入新结点p的平衡因子为0,它的父结点为pr,修改后pr的平衡因子值有三种情况:结点pr的平衡因子为0,不需要进行平衡化处理结点pr的平衡因子的绝对值|bf|=1,需要从结点pr向根的方向回溯,进行平衡化处理结点...原创 2019-10-22 15:15:46 · 139 阅读 · 0 评论 -
二叉搜索树(BST)
目录二叉搜索树的搜索二叉搜索树的插入二叉搜索树的删除性质:每个结点都有一个作为搜索依据的关键码(key),所有结点的关键码互不相同。左子树上的所有结点的关键码都小于根结点的关键码。右子树上的所有结点的关键码都大于根结点的关键码。左子树和右子树也是二叉搜索树。二叉搜索树的搜索从根结点开始,沿着某一个分支逐层向下进行比较判断的过程。可以是一个递归的过程。假设想要在二叉搜索树搜索关键码...原创 2019-10-22 14:28:09 · 171 阅读 · 0 评论 -
散列
目录散列函数几种散列函数:处理冲突的闭散列:处理冲突的开散列方法元素的存储位置与它的关键码之间有一个确定的对应函数关系Hash():Address=Hash(key)散列函数构造散列函数要求:散列函数的定义域必须包括需要存储的全部关键码散列函数计算出来的地址应能均匀分布在整个地址空间中散列函数应该简单几种散列函数:除留余数法:取最接近于或等于m的质数p作为除数。数字分析法...原创 2019-10-22 11:08:55 · 228 阅读 · 0 评论 -
树、堆与Huffman树
目录树的遍历子女-兄弟链表表示法,是一种二叉树表示法。它的每个结点的度d=2,每个结点由3个域组成:|data|firstChild|nextSibling| 左孩子右兄弟。树的遍历利用子女-兄弟链实现遍历树的深度优先遍历:利用递归进行先根次序遍历和后根次序遍历。树的广度优先遍历:借助队列。在访问某一层的结点时,扫描它的所有子女(循子女的右兄弟链),把它们依次进队列。//深度优先#...原创 2019-10-22 10:12:09 · 127 阅读 · 0 评论 -
二叉树的存储与遍历
目录二叉树二叉树的性质二叉树的存储表示数组存储表示链表存储表示二叉树遍历及其应用三种遍历方式:利用二叉树前序遍历建立和输出二叉树二叉树遍历的非递归算法结点的度:结点所拥有的子树棵数。结点的层次:从根到该结点所经路径上的分支条数。叶结点:度为0的结点。树的深度:树中距离根结点最远的结点所处层次即为树的深度。树的度:树中结点的度的最大值。有序树:树中结点的各棵子树是有次序的。二叉树特点...原创 2019-10-21 21:57:23 · 331 阅读 · 0 评论 -
栈和队列
目录栈顺序栈链式栈栈的应用——表达式的计算栈栈定义:只允许在表的末端进行插入和删除的线性表。栈是后进先出。栈的抽象数据类型有两种典型的存储表示:基于数组的存储表示的顺序栈和基于链表的存储表示的链式栈。栈的类定义:const int maxSize=50;enum bool{false,true};template<class T>class Stack{public:...原创 2019-10-21 16:19:17 · 156 阅读 · 0 评论 -
线性表
目录顺序表单链表头结点和头指针单链表的类定义循环链表双向链表静态链表线性表为n个数据元素的一个有限的序列。线性表的第一个表项称为表头,最后一个表项称为表尾。线性表是一个有限序列,意味着表中各个表项是相继排列的,且两个相邻表项之间都有直接前驱和直接后继的关系。邻接关系是1对1的。线性表的存储表示有两种:顺序存储方式和链表存储方式。顺序表用顺序存储方式实现的线性表,是用数组作为表的存储结构的...原创 2019-10-19 13:33:24 · 146 阅读 · 0 评论 -
初识数据结构
摘要:本系列博客是笔者学习《数据结构》(清华大学出版社)的一些见解和摘记,希望可以与大家一起讨论交流,希望各位可以提出自己的宝贵意见!目录数据结构概念数据结构概念数据:信息的载体,对客观事物的描述以及可用于计算机的符号集合(通俗就是能提供信息的东西)。数据的基本单位是数据元素,即构成数据的成员。数据元素中的数据项按是否能再分割有初等项和组合项。数据结构:描述数据元素之间的关系,分为:线性...原创 2019-10-18 20:05:39 · 103 阅读 · 0 评论