#include<iostream> using namespace std; #define INFINITY INT_MAX //最大值 #define MAX_VERTEX_NUM 20 //最大顶点个数 typedef enum {DG,DN,UDG,UDN}Graphkind; typedef struct { char vex[MAX_VERTEX_NUM];//顶点向量 int arcMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];//邻接矩阵 int vexnum,arcnum;//顶点数和弧度数 Graphkind kind;// 图的种类标志 }MGraph; void CreatDN(MGraph *G)//有向网 { int row,c,vel; cout<<"输出顶点\n"; cin>>G->vexnum>>G->arcnum; cout<<"构造顶点向量"<<'\n'; for(int i=0;i<G->vexnum;++i)cin>>G->vex[i];//构造顶点向量 for(int i=0;i<G->vexnum;++i) for(int j = 0;j<G->vexnum;++j) G->arcMatrix[i][j] = INFINITY;//初始化邻接矩阵 for(int k=0;k<G->arcnum;++k) { cout<<"输入边的关系:\n"; cin>>row>>c>>vel; G->arcMatrix[row][c]=vel; } } void CreatDG(MGraph *G){} void CreatUDG(MGraph *G){} void CreatUDN(MGraph *G){} void CreatGraph(MGraph *G) { cout<<"input graphkind:\n"; cin>>(int&)G->kind; switch(G->kind) { case 1:CreatDG(G);break; case 2:CreatDN(G);break; case 3:CreatUDG(G);break; case 4:CreatUDN(G);break; default:cout<<"error\n"; } } void main() { MGraph G; CreatGraph(&G); for(int i=0; i<G.vexnum; i++) { for(int j=0; j<G.vexnum; j++) { cout<<G.arcMatrix[i][j]<<'\t'; } cout<<endl; } }
图的数组表示(邻接矩阵)
最新推荐文章于 2022-11-20 00:45:37 发布