数据结构
Edith·上官
这个作者很懒,什么都没留下…
展开
-
WPL、最优二叉树(哈夫曼树)
定义:最优树,带全路径长度最短的树基本概念:1:路径长度:从树的一个结点到另一个结点的路径中,路径上的分支数目为路径长度2:树的路径长度:从根结点到某个结点的路径长度之和3:树的带权路径长度(WPL):树中所有叶子结点的带权路径长度之和 简单来说:每个(叶子结点的权)(根到该叶子结点的分支数)之和4:最优二叉树(哈夫曼树):WPL最小的树5:一个有n个结点的哈夫曼树共有2n-1个结点...原创 2020-04-01 11:22:46 · 3418 阅读 · 3 评论 -
树和森林,左孩右兄树
树和森林树的三种表示方法:1:双亲表示法,2:孩子表示法 ,3:孩子兄弟表示法1:给定一棵树,可以找到唯一的一棵二叉树与之对应2:双亲表示法:小蝌蚪找妈妈#define MAX_Tree_Size 100#define TElemtype inttypedef struct PTNode{ TElemtype data; int parent;}PT...原创 2020-04-01 11:21:43 · 467 阅读 · 0 评论 -
线索化二叉树、TBT
线索二叉树1:以某种次序遍历使其变成二叉树的过程叫做线索化2:规定如下:若结点有左子树,则其lchild 指向左孩子,否则指向其前驱,若该结点有右 孩子,其rchild指向右孩子,若无则指向后继3:后序线索化二叉树对查找指定结点在该次序下的后序效率比较差4:线索二叉树是一种存储结构5:有n个结点的二叉树中,线索(前驱后继)指针的数目n+1,子女指针数目n-1;typedef int ...原创 2020-04-01 11:20:10 · 289 阅读 · 0 评论 -
数组和广义表,稀疏矩阵
考点:广义表的长度和深度,稀疏矩阵的相关操作广义表:LA=(A1,A2,…,An),LA为表名,n为表长,其中Ai可以是单个元素,亦可以是广义表,分别称为 原子和子表。A1为表头,(A2,…An)为表尾1:广义表表长:原子的个数(此时要把最大子表广义归结为原子)2:广义表深度:括弧的重数,空表深度为13:已知广义表A=((a,b,c),(d,e,f)),从表中取e的运算:分解:tail(...原创 2020-04-01 11:14:24 · 406 阅读 · 0 评论 -
排序,插入排序,交换排序,选择排序,归并排序
排序原创 2020-04-01 11:31:59 · 501 阅读 · 0 评论 -
查找、二叉查找树、平衡二叉树
查找代码基本没有,主要是定义,计算和概念1:分为静态查找表和动态查找表,区别,动态查找表插入不存在的数据元素or删除已存在的数据元素2:其关键字和给定值进行过比较的记录个数的平均值,他的期望为ASL=∑Pi*Ci...原创 2020-04-01 11:30:07 · 316 阅读 · 0 评论 -
拓扑排序,关键路径及最短路径
拓扑排序:作用:判断有向图是否有环做法:1在有向图中选取一个没有前驱(没有弧头指向的)的顶点且输出之2从图中删除该顶点和所有以他为尾的弧时间复杂度:O(n+e) n为顶点数,e为边数关键路径:路径长度最长的路径为关键路径 目的:辨别哪些是关键活动为什么是最长呢?依我愚见,因为关键工程要花最多时间,就算其他工程就算完工了也无用,还要等这些时间花得比较多的工程。最短路径1:求某个...原创 2020-04-01 11:28:38 · 1033 阅读 · 0 评论 -
普利姆(Prim),(克鲁斯卡尔)kruskal算法,最小生成树,DFS和BFS以及图的连通性问题
DFS和BFS1:图的DFS=树的先根遍历=二叉树的先序遍历。从无向图任意结点出发进行一次DFS即可访问所有结点,则该图是:连通图判断一个有向图是否有环亦可用DFS2:基于邻接矩阵的DFS时间复杂度:O(n^2),基于邻接表的DFS时间复杂度:O(n+e)3:图的BFS=树的层次遍历,能够遍历所有与该结点连通的顶点,可求无向图的所有连通分量4:基于邻接矩阵的BFS是唯一的,基于邻接表的...原创 2020-04-01 11:26:09 · 671 阅读 · 0 评论 -
图,数据结构:图,Graph
图形结构1:在图中元素通常称为顶点2:<v,w>表示从v到w的一条弧,v为弧尾,w为弧头(带有箭头的那边),此时为有向图3:(v,w) 表示从v到w的一条边,此时为有向图4:n为顶点数,e为边or弧的数,e=n(n-1)/2的无向图为无向完全图,e=n(n-1)有向完全图;e<nlog2 n为稀疏图,否则为稠密图5:顶点(v)的度:与顶点v相关联的边(弧)的数目;在有向...原创 2020-04-01 11:24:20 · 531 阅读 · 0 评论 -
二叉树的相关操作,先、中、层次遍历二叉树
基于链式存储的二叉树的操作遍历:先序(根-左-右),中序(左-根-右),后序(左-右-根)typedef int TElemtype;typedef char Elemtype; #define Increament 100#define Status int #define Error -1#define ok 0 #define True 1#define B...原创 2020-04-01 11:18:22 · 1580 阅读 · 0 评论 -
树与二叉树定义、性质
三多:代码最多,内容最多,考的最多。定义及其基本术语:1:树:n个结点的有限集(n>=0),在非空树中,由根结点和子树构成2:度:该结点所拥有的子树树,度为0的结点称为叶子结点3:深度树中结点的最大的层次树4:树的总结点数=所有结点的度数+15:二叉树:每个结点最多有两棵子树,且子树有左右之分6:二叉树性质:二叉树的第i层最多有2^(i-1)个结点7:深度为k的二叉树最多有2...原创 2020-04-01 11:16:31 · 255 阅读 · 0 评论 -
串,KMP算法,next[]值
串1:比较不经常考,主要描述比较出名的KMP算法及其next值的来由原创 2020-04-01 11:10:41 · 246 阅读 · 0 评论 -
栈和队列(Stack & Queue)
栈和队列栈1:定义:仅能在表尾进行插入或者删除的线性表, 表头为栈底2:同s表示进栈,x代表出栈 。若进栈顺序为1,2,3,4,为了得到出栈顺序1,3,4,2 则对应s和x的操作序列:sxssxsxx3:已知一个栈的进栈顺序为1,2,3,…,n其输出序列的第1个元素为i 则第j个出栈元素为:(不确定)因为进栈后可能出,出栈后有可能进4:在实现顺序栈操作应该判断栈是否为满,出栈前应该判断是...原创 2020-04-01 11:08:05 · 670 阅读 · 0 评论 -
线性表的相关操作、linear list
笔记:线性表的要点定义:n个数据元素的有限序列,可以为空线性表的顺序表示:用一组地址连续的存储单元依次存储线性表中的数据元素。优点:便于随机存取C语言实现(软件:Dev-C++):欢迎大家批评指正#define List_init_size 100 //初始 #define listincrement 10 //增量 #define Status int#define ok ...原创 2020-03-24 00:53:14 · 1923 阅读 · 7 评论 -
《数据结构与算法》C语言实现,严蔚敏版;菜鸟小白初学《Data Structure》
标题:《数据结构与算法》C语言,严蔚敏版我的笔记,代码和感悟。目录:线性结构线性表:树形结构图形结构查找排序原创 2020-03-23 23:54:43 · 3661 阅读 · 3 评论