用邻接矩阵存储的有向图的非递归遍历
来源:互联网 发布:易观的数据来源 编辑:程序博客网 时间:2024/05/22 15:42
/**************************************************有向图的非递归遍历, 程序假如图的强联通的如果不是强联通简单修改即可。*************************************************/#include <iostream>#include <cstdio>using namespace std;const int maxsize = 100;typedef struct sqstack { int data[maxsize]; int top;}sqstack;void InitStack(sqstack &s) { s.top = -1;}bool StackEmpty(sqstack s) { if(s.top == -1) return true; else return false;}bool StackFull(sqstack s) { if(s.top == maxsize-1) return true; else return false;}bool Push(sqstack &s, int x) { if(s.top == maxsize-1) return false; s.data[++s.top] = x; return true;}bool Pop(sqstack &s, int &x) { if(s.top == -1) return false; x = s.data[s.top--]; return true;}bool GetTop(sqstack s, int &x) { if(s.top == -1) return false; x = s.data[s.top]; return true;}int mat[maxsize][maxsize];int n, m; // 图的顶点和边。图的顶点标号从1到nvoid DFS(int v) { int tmp; bool vis[maxsize]; sqstack s; InitStack(s); memset(vis, false, sizeof(vis)); Push(s, v); vis[v] = true; while(!StackEmpty(s)) { Pop(s, tmp); printf("%d ", tmp); for(int i = 1; i <= n; i++) { if(mat[tmp][i]==1 && !vis[i]) { Push(s, i); vis[i] = true; // marked. } } }}void input_map() { int from, to; memset(mat, 0, sizeof(mat)); printf("请输入总的顶点数和边数:\n"); cin >> n >> m; printf("输入每一条边的起点和终点\n"); for(int i = 0; i < m; i++) { cin >> from >> to; mat[from][to] = 1; }}int main() { input_map(); printf("please input the start point\n"); int start; cin >> start; DFS(start); return 0;}/**Test:6 81 21 42 32 43 64 55 36 5**/
0 0
- 用邻接矩阵存储的有向图的非递归遍历
- 有向图的邻接矩阵存储
- 无向图的邻接矩阵,深度优先遍历和广度优先遍历的递归与非递归算法
- 无向图的邻接矩阵,深度优先遍历广度优先遍历的递归与非递归算法
- 有向图的邻接表存储,递归和非递归的深度、广度遍历(codeblocks+gcc)
- 利用邻接矩阵存储无向图,并实现BFS(非递归) DFS(递归+非递归)两种遍历
- 数据结构_图的邻接矩阵存储递归及非递归
- 有向图的邻接矩阵
- 【数据结构】邻接矩阵表示法的图的深度广度优先遍历递归和非递归遍历
- 【数据结构】邻接矩阵表示法的图的深度广度优先遍历递归和非递归遍历
- 邻接矩阵存储有向图
- 邻接矩阵存储有向图
- 用邻接表存储有向图并实现DFS(递归+非递归)BFS(非递归)两种遍历
- 用有向图的邻接矩阵存储结构实现prim算法
- 用邻接矩阵存储有向图 输出各点的出度和入度
- 用邻接矩阵存储有向图,并输出各顶点的出入和入度。
- 图的深度优先搜索遍历(邻接表&邻接矩阵,递归&非递归)(C++)
- 图的深度优先遍历(递归、非递归;邻接表,邻接矩阵)
- 算法博客索引
- Android 向右滑动销毁(finish)Activity, 随着手势的滑动而滑动的效果
- lua 支持多点触摸例子
- Java IO流
- eclipse下修改项目名称web.xml出错Attribute "xmlns" was already specified for element "web-app"
- 用邻接矩阵存储的有向图的非递归遍历
- 情比金坚却抵不过岁月洗礼
- xcode5 organizer archive 的一些事
- UIButton 技巧setTitleEdgeInsets
- ANDROID4.0 裁剪与定制
- 2 tomcat的内存的配置?
- ajax初来咋到
- Linux文件与目录管理
- AngularJS的 $on、$emit和$broadcast使用