图的邻接矩阵存储方式是用两个数组来表示图。一个一维的数组存储图中顶点信息,一个二维数组(邻接矩阵)存储图中的边或弧的信息。
#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; }