图的邻接矩阵存储方式是用两个数组来表示图。一个一维的数组存储图中顶点信息,一个二维数组(邻接矩阵)存储图中的边或弧的信息。
#include<iostream>
using namespace std;
#define MAXVEX 100/*最大顶点数*/
#define INFINITY 65535//表示权值得无穷
typedef int EdgeType;//边上权值类型
typedef char VertexType;//顶点类型
typedef struct
{
VertexType vexs[MAXVEX];//顶点表
EdgeType arc[MAXVEX][MAXVEX];//邻接矩阵,可看作边表
int numNodes,numEdges;//图中当前的顶点数和边数
} MGraph;
void CreateMGraph(MGraph *Gp)
{
int i,j,k,w;
cout<<"请输入顶点数和边数:"<<endl;
cin>>Gp->numNodes>>Gp->numEdges;
cout<<"请输入顶点信息:"<<endl;
for(i=0;i<Gp->numNodes;i++)
cin>>Gp->vexs[i];
for(i=0;i<Gp->numNodes;i++)
{
for(j=0;j<Gp->numNodes;j++)
{
if(i==j)
Gp->arc[i][j]=0;
else
Gp->arc[i][j]=INFINITY;
}
}
for(k=0;k<Gp->numEdges;k++)
{
cout<<"请输入边(vi,vj)的上标i,下标j和权值w:"<<endl;
cin>>i>>j>>w;
Gp->arc[i][j]=w;
Gp->[j][i]=Gp->arc[i][j];//无向图 矩阵对称
}
}
int main()
{
MGraph MG;
CreateMGraph(&MG);
return 0;
}
9396

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



