临时
2016-05-26 09:25
323 查看
#include <iostream> using namespace std; typedef char VertexType; typedef int EdgeType; const int MAXVEX = 100; const int INFINITY = 65535; bool visits[MAXVEX]; VertexType quque[MAXVEX]; typedef struct { VertexType vexs[MAXVEX]; EdgeType arc[MAXVEX][MAXVEX]; int numVertexes,numEdges; } MGraph; // 1 void CreateMGraph(MGraph &G) { int i,j,k,w; cout<<"请输入顶点数和边数: "; cin>>G.numVertexes>>G.numEdges; cout<<"请输入各顶点信息: "<<endl; for(i=0;i<G.numVertexes;i++) { cin>>G.vexs[i]; } for(int i=0;i<G.numVertexes;i++) { for(int j=0;j<G.numVertexes;j++) { G.arc[i][j] = INFINITY; } } for(int k=0;k<G.numEdges;k++) { cout<<"请输入边(vi,vj)的上下坐标i,j以及边的权值w: "; cin>>i>>j>>w; G.arc[i][j] = w; G.arc[j][i] = G.arc[i][j]; } } void DFS(MGraph G,int i) { int j; visits[i] = true; cout<<G.vexs[i]<<" "; for(j=0;j<G.numVertexes;j++) { if(G.arc[i][j]!=INFINITY && !visits[j]) { DFS(G,j); } } } // 2 void DFSTraverse(MGraph G) { int i; for(i=0;i<G.numVertexes;i++) visits[i] = false; for(i=0;i<G.numVertexes;i++) { if(!visits[i]) { DFS(G,i); } } } // 3 void BFS(MGraph G) { int i; int head = 0; int tail = 0; for(i=0;i<G.numVertexes;i++) { visits[i] = false; quque[i] = ' '; } quque[tail] = G.vexs[0]; visits[tail] = true; tail++; while(head<tail) { for(i=0;i<G.numVertexes;i++) { if(G.arc[head][i]!=INFINITY && !visits[i]) { quque[tail] = G.vexs[i]; tail++; visits[i] = true; } if(tail>G.numVertexes) { break; } } head++; } for(i=0;i<G.numVertexes;i++) { if(visits[i]) { cout<<"yes"<<i<<" "; } } } int main() { MGraph G; CreateMGraph(G); DFSTraverse(G); BFS(G); return 0; }
相关文章推荐
- eclipse3.7 安装github插件错误解决
- 根目录扩展
- AFNetwork 作用和用法详解
- YII页面缓存
- php 数组 常用函数
- java maven诡异的错误no class found
- velocity 利用 HttpServletRequest 参数
- C#清除HTML标签方法汇总
- 2 method http call in controller in AngularJS
- linux配置网络详细解析,上外网
- centos升级glibc过程
- PL/SQL Developer使用技巧、快捷键
- 窗体程序 (控件随窗体变化而变化)
- 《上古天真论》第十四讲文字版
- Leetcode 之Length of Last Word(37)
- 自定义BOL组件集
- 数据库sharding-基本策略和原理
- 第13周项目1:分数类中的运算符重载(1)
- Leetcode 206. Reverse Linked List
- Android Studio使用lambda