![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
图
一根小羽毛
这个作者很懒,什么都没留下…
展开
-
计算机网络和数据结构的结合
弧结点的两种形态|flag=1| next || id || ip || metric ||flag=0| next || prefix || metric |表头节点:|router id || link || next |typedef struct //弧结点{ unsigne原创 2021-07-15 14:40:32 · 252 阅读 · 0 评论 -
用dfs实现无环图拓扑、逆拓扑排序
拓扑排序:对于无环图中的任意节点u、v,若其中一个是另一个父节点或者祖先结点,则dfs时孩子结点总是会先结束,即祖先结点结束的时间必然大于孩子结点的时间;若两者没有关系,则在拓扑排序中的顺序也没关系。所以设置一个结构体来记录每一个节点递归结束时的时间,最后根据时间从大到小排序,就是拓扑排序的顺序。struct node{ int num; int time;}finish[100];void Sort(ALGraph G){ int i; for(i = 0; i原创 2021-07-14 17:12:49 · 1784 阅读 · 1 评论 -
分别基于dfs和bfs判断是否存在路径
分别基于深度优先遍历和广度优先遍历算法判别以邻接表方式存储的有向图中是否存在有顶点Vi到顶点Vj的路径。dfs的:void dfs(ALGraph A, int start, int dest, int k, int vis[],int flag) { vis[k] = true; if(k == dest) { flag = 1; return; } int x = FirstNeighbour(A, k); for(i原创 2021-07-12 17:39:47 · 903 阅读 · 0 评论 -
dfs算法的非递归算法(邻接表存储)
非递归算法就要借助一个栈!使用栈之后访问visit函数就是从右到左进行的void dfs(AGraph &A, int k){ InitStack(s); //初始化一个栈 int i; for(i = 0; i < A.vexnum; i++) { vis[i] = flase; } push(&s, k); while(!IsEmpty(s)) { k = Pop(s);原创 2021-07-12 15:15:49 · 650 阅读 · 0 评论 -
6.3 图的遍历-判断是不是树
设计一个算法,判断一个无向图G是不是一颗树,若是返回true,不是返回false判断一个无向图G是不是一棵树:G必须是无回路的连通图或有n-1条边的连通图用dfs遍历,若可以遍历所有顶点,并且遍历过的边数是n-1就是一棵树bool is_tree(mgraph graph, int vis[]){ int i; for(i = 0; i < graph.vexnum; i++) { vis[i] = false; } int Vnum =原创 2021-07-12 14:50:41 · 277 阅读 · 0 评论