#include <iostream>#include<stdio.h>using namespace std; #define FINITY 5000 //此处用5000代表最大#define m 20 //最大顶点树typedef char vertextype; //顶点值类型typedef int edgetype; //权值类型 typedef struct{ vertextype vexs[m]; //顶点值类型 edgetype edges[m][m]; //邻接矩阵 int n,e; //顶点总数 和 边树}mgraph; //邻接矩阵表示的图类型 // 图的邻接矩阵创建算法 void createmgraph1(mgraph *g){ int i,j,k,w; cout<<"\n输入图的顶点数:"; cin>>g->n; cout<<"\n输入图的边数:"; cin>>g->e; getchar(); //取消输入的换行符 cout<<"\n请输入顶点信息:"; for(i=0;i<g->n;i++) { char c; cin>>c; g->vexs[i]=c; } //初始化邻接矩阵 for(i=0;i<g->n;i++) for(j=0;j<g->n;j++) if(i==j) g->edges[i][j]=0; else g->edges[i][j]=FINITY; cout<<"\n输入边的信息:\n"; cout<<"\ni--->j 值为w.\n"; for(k=0;k<g->e;k++) { cin>>i; //? 怎么把输入格式转为 i----->j??? // cout<<"---->"; cin>>j; cin>>w; g->edges[i][j]=w; g->edges[j][i]=w; //此处建立无向图 }} // 输出此无向图 void print(mgraph g){ cout<<"\n此无向图共有"<<g.n<<"个结点, "<<g.e<<"条边.\n"; cout<<"\n结点信息为:"; for(int i=0;i<g.n;i++) cout<<g.vexs[i]<<" "; cout<<"\n邻接矩阵图为:\n"; for(i=0;i<g.n;i++) { for(int j=0;j<g.n;j++) cout<<g.edges[i][j]<<" "; cout<<endl; }} int main(){ mgraph g; createmgraph1(&g); print(g);}

评论