#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; } }
图的数组表示(邻接矩阵)
最新推荐文章于 2026-06-14 13:40:12 发布
本文介绍了一种使用邻接矩阵表示图的方法,并通过C++代码实现了有向图的创建过程。具体包括定义图的基本结构、初始化邻接矩阵、输入顶点及边的数据等步骤。
&spm=1001.2101.3001.5002&articleId=9450667&d=1&t=3&u=57b8c1b499274399a74d87bb70574560)
6381

被折叠的 条评论
为什么被折叠?



