图的遍历
来源:互联网 发布:java 证书导出私钥 编辑:程序博客网 时间:2024/06/06 03:43
#include #include #include #include using namespace std;int visted[100];class Graph{public:char vertexs[100];char Edges[100][100];int vexnum, arcnum;Graph() {}Graph CreateGraph();int LocateIn(Graph graph, char data);int FirstVertex(Graph graph,int i);int NextVertex(Graph graph, int i, int j);void Solve(Graph graph);void DFS(Graph graph,int i);};Graph Graph::CreateGraph(){Graph graph;printf("请输入顶点的个数和边的个数:\n");scanf("%d%d", &graph.vexnum, &graph.arcnum);printf("请输入顶点集:\n");getchar();memset(graph.Edges, 0, sizeof graph.Edges);//边权为0表示不连通for (int i = 1; i <= graph.vexnum; i++){scanf("%c", &graph.vertexs[i]);getchar();}printf("请输入边集:\n");for (int i = 1; i <= graph.arcnum; i++){char u, v;scanf("%c %c", &u, &v);getchar();int x = LocateIn(graph,u);//找到u的在结点中的小标位置int y = LocateIn(graph,v);//同上if (x != -1 && y != -1)graph.Edges[x][y] = graph.Edges[y][x] = 1;//此时表示两个节点连通了}return graph;}int Graph::LocateIn(Graph graph, char data){for (int i = 1; i <= graph.vexnum; i++){if (graph.vertexs[i] == data)return i;}return -1;}int Graph::FirstVertex(Graph graph, int i){if (i >= 1 && i <= graph.vexnum) {for (int k = 1; k <= graph.vexnum; k++){if (graph.Edges[i][k])return k;}} return -1;}int Graph::NextVertex(Graph graph, int i, int j){if (i >= 1 && i <= graph.vexnum&&j <= graph.vexnum&&j >= 1){for (int k = j + 1; k <= graph.vexnum; k++){if (graph.Edges[i][k])return k;}}return -1;}void Graph::Solve(Graph graph){memset(visted, 0, sizeof visted);printf("DFS序列为:\n");for (int i = 1; i <= graph.vexnum; i++){if (visted[i] == 0){DFS(graph, i);}}printf("\n");}void Graph::DFS(Graph graph,int i){if (visted[i] == 0){visted[i] = 1;printf("%3c", graph.vertexs[i]);for (int j = graph.FirstVertex(graph, i); j >= 1; j = graph.NextVertex(graph, i, j)){if (visted[j] == 0){DFS(graph, j);}}}}int main(){Graph graph;graph = graph.CreateGraph();graph.Solve(graph);return 0;}/*8 9abcdefgha bb eb dd ff ea cg ch cg h*/
0 0
- 图:图的遍历(深度优先遍历、广度优先遍历)
- java图的遍历方式(深度遍历、广度遍历)
- java图的遍历方式(深度遍历、广度遍历)
- 图的遍历(深度遍历和广度遍历)
- 图的遍历:深度优先遍历和广度优先遍历
- 图的 深度遍历 广度遍历
- 图的深度遍历和广度遍历
- 图的遍历(深度优先遍历)
- 图的遍历:深度优先遍历
- 图的遍历:宽度优先遍历
- 图的广度遍历和深度遍历
- 图的深度遍历和广度遍历
- 图的遍历-深度优先遍历
- 图的遍历-广度优先遍历
- 图的dfs遍历和bfs遍历
- 图的深度遍历和广度遍历
- 图的遍历算法-马遍历棋盘
- 图的遍历算法-马遍历棋盘
- Linux GCC常用命令
- 日历ui
- 百度地图指定覆盖物的隐藏删除操作
- sendmsg() Permission denied
- Felix
- 图的遍历
- 我为什么上大学
- 关于jsp页面渲染<c:if>标签的用法。
- Java 斐波那契数列
- 深入理解Java的接口和抽象类(转载---写的非常好~)
- retain、copy、mutableCopy的区别(深拷贝 浅拷贝)
- No important thing
- 95,autorelease的注意事项
- 托盘图标的制作,点击与触发