![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 50
我是一个正经人
这个作者很懒,什么都没留下…
展开
-
图的应用(最小生成树)
借助图求最小生成树在多个城市之间建立通讯网时,可能的选项有很多,当在每个城市之间建立通信网的成本不同时,应当找到一个合适的选项以建立最合理的通信网,这就是最小生成树,也就是连接图中所有点的最短路径。求最小生成树的方法大多利用了一种叫MST的性质,即假设N = (V,{ E })是一个连通网,U 是顶点集V的一个非空子集。若(u , v )是一条具有最小权值(代价)的边,其中u∈U, v∈V - U,则必存在一棵包含边(u,v)的最小生成树。求最小生成树的方法主要有两种,普利姆算法,也被称为.原创 2021-08-20 18:57:40 · 285 阅读 · 0 评论 -
图的遍历(bfs和dfs)
1.深度优先搜索深度优先搜索遍历与树的先序遍历类似,从某个点出发,寻找其第一个未访问过的邻接点,访问该点并以该点为起点寻找其第一个未访问过的邻接点,同时申请一个一维数组,对每一个点若其已经被访问过则将该点在数组中对应的值置为1。这个过程通过递归来实现若图借助邻接矩阵法表示,dfs的实现代码如下void DFS(AMGraph G,int v)//从第几个点开始搜索 { cout<<G.vexs[v]<<endl; visited[v]=1; for(int i=原创 2021-08-18 18:53:30 · 180 阅读 · 0 评论 -
图的存储结构
图的存储结构1.邻接矩阵表示法邻接矩阵可以表示顶点之间的关系,可以借助二维数组表示,对于无向图若两点之间的边存在,则该位置的值为1,反之则为0;对于有向图还需要考虑入点和出点的问题,若一条边从 i 点出发进入 j 点,则 a [ i ][ j ]=1,而 a [ j ][ i ]仍为0。采用邻接矩阵表示法创建图时,用一个二维数组储存边,再用一个一维数组储存点的名称和边的权值即可。下面以创建无向网为例#include <iostream>#include <string&原创 2021-08-15 21:18:58 · 282 阅读 · 0 评论 -
哈夫曼树和哈夫曼编码
哈夫曼树哈夫曼树是一类带权路径最短的树,构造方法是1.根据已给的权值构造一系列只有根结点的二叉树,这些二叉树构成森林。2.不断地在森林中寻找权值最小的两棵树,将两棵树的根结点作为一个新结点的左右儿子,新生成一棵树,并将新树继续加入森林之中。3.将挑出来的权值最小的两棵树从森林中删除。重复上述过程,直到森林中只有一棵树,这棵树就是哈夫曼树,它的带权路径长度最小。#include<iostream>using namespace std;typedef struct{原创 2021-08-12 17:29:08 · 258 阅读 · 0 评论 -
树和二叉树
目录树的定义树的存储结构树的定义树是一种重要的数据结构,它是由n个结点的有限集,对于非空的树(1)有且仅有一个称之为根的结点(2)任意一个结点下面可以接m个互不相交的有限集,称这为这棵树的子树。对于树中的每个结点,它的子结点有且仅有两个或不存在子结点,这棵树就可以被称为二叉树。而二叉树又被分为满二叉树,完全二叉树,非完全二叉树。1.满二叉树每一层上的结点数都是最大结点数。2.完全二叉树若一个二叉树深度为k,结点数为n,且从1到n的每个结点都与深度为k的完全原创 2021-08-10 17:06:57 · 103 阅读 · 0 评论 -
栈及其基本应用
栈以其先进先出的特性在算法中有很多的应用,其中顺序栈一般被使用的更多(不用写next指针直接用数组就可以定义),以下为顺序栈的存储结构#define maxsize 100typedef struct{ int *base; int *top; int stacksize;}sqstack;借助top指针我们可以实现对栈中元素的增删查改等基本操作。int pop(stack &s,int &e)//出栈{ if(s.top==s.base)...原创 2021-08-01 19:50:15 · 221 阅读 · 0 评论