#include<iostream> #define N 100 using namespace std; struct Graph{ int vertex_number; int edge_number; char vertex[N]; int edge[N][N]; }; Graph* G; int getVertexPosition(char v){ for(int k=0;k<G->edge_number;k++){ if(G->vertex[k]==v){ return k; } } return -1; } void createGraph(){ cout<<"请输入各个顶点:"<<endl; for(int k=0;k<G->vertex_number;k++){ cin>>G->vertex[k]; } for(int i=0;i<G->vertex_number;i++){ for(int j=0;j<G->vertex_number;j++){ G->edge[i][j]=0; } } cout<<"请输入各个边的邻接点、权重:"<<endl; for(int k=0;k<G->edge_number;k++){ char v1,v2; int weight; cin>>v1>>v2>>weight; int i=getVertexPosition(v1); int j=getVertexPosition(v2); G->edge[i][j]=weight; } } void show(){ cout<<"输出各个顶点:"<<endl; for(int k=0;k<G->vertex_number;k++){ cout<<G->vertex[k]; } cout<<endl; cout<<"输出邻接矩阵:"<<endl; for(int i=0;i<G->vertex_number;i++){ for(int j=0;j<G->vertex_number;j++){ cout<<G->edge[i][j]; } cout<<endl; } } int main(){ G=new Graph(); cout<<"请输入顶点个数、边个数:"<<endl; cin>>G->vertex_number>>G->edge_number; createGraph(); show(); return 0; }
原文:https://www.cnblogs.com/zzyf/p/13392634.html