基于visual Studio2013解决算法导论之054图的邻接矩阵表示

来源:互联网 发布:多个数最小公倍数算法 编辑:程序博客网 时间:2024/05/29 10:53



题目

图的邻接矩阵表示


解决代码及点评

// 图的邻接矩阵表示.cpp : 定义控制台应用程序的入口点。//#include <iostream>  #include <list>  using namespace std; #define MAXVEX 10  #define INFINITY 65535  typedef struct { char vexs[MAXVEX]; int arc[MAXVEX][MAXVEX]; int numVertexes; int numEdges; }MGraph;//图的数据结构,邻接矩阵  void CreateMGraph(MGraph *pGraph,int &numVexs,int &numEdges) { pGraph->numEdges=numEdges; pGraph->numVertexes=numVexs; for(int i=0;i<numVexs;i++) { cout<<"输入第"<<i+1<<"个顶点:"; cin>>pGraph->vexs[i]; } for(int i=0;i<numVexs;i++) { for(int j=0;j<numVexs;j++) pGraph->arc[i][j]=INFINITY; } for(int i=0;i<numEdges;i++) { int j,k; cout<<"请输入第"<<i+1<<"条边的下标:"; cin>>j>>k; pGraph->arc[j][k]=1; pGraph->arc[k][j]=1; } } void BFSTravers(MGraph &pGraph) { int num=pGraph.numVertexes; list<int> queue; bool *visited=new bool[num]; for(int i=0;i<num;i++) visited[i]=false; for(int i=0;i<pGraph.numVertexes;i++) { if(!visited[i]) { cout<<"访问顶点"<<pGraph.vexs[i]<<endl; visited[i]=true; queue.push_back(i); while(!queue.empty()) { i=queue.front(); queue.pop_front(); for(int j=0;j<pGraph.numVertexes;j++) { if(pGraph.arc[i][j]==1&&!visited[j]) { cout<<"访问顶点"<<pGraph.vexs[j]<<endl; visited[j]=true; queue.push_back(j); } } } } } delete []visited; } int main(int argc, char* argv[]) { MGraph graph; int numVex; int numEdge; cout<<"输入图的顶点数:"; cin>>numVex; cout<<"输入图的边数:"; cin>>numEdge; CreateMGraph(&graph,numVex,numEdge); BFSTravers(graph); system("pause"); return 0; } 


代码下载及其运行

代码下载地址:http://download.csdn.net/detail/yincheng01/6858815

解压密码:c.itcast.cn


下载代码并解压后,用VC2013打开interview.sln,并设置对应的启动项目后,点击运行即可,具体步骤如下:

1)设置启动项目:右键点击解决方案,在弹出菜单中选择“设置启动项目”


2)在下拉框中选择相应项目,项目名和博客编号一致

3)点击“本地Windows调试器”运行


程序运行结果








0 0