//邻接矩阵存储表示 在用邻接矩阵存储图时 除了用一个二维数组存储用于
//表示顶点间相邻关系的邻接矩阵外 还需用一个一维数组来存储顶点信息
//另外还有图的顶点数和边数。故可将其形式描述如下
#include<iostream>
using namespace std;
#define maxvertexnum 100 //最大顶点数设为100
typedef char vertextype; //顶点类型设为字符型
typedef int edgetype; //边的权值设为整型
struct Node
{
vertextype vexs[maxvertexnum];//顶点表
edgetype edges[maxvertexnum][maxvertexnum];//邻接矩阵,即边表
int n,e; //顶点数和边数
}Maragh; //Maragh是以邻接矩阵存储的图类型
void Createmaragh(Node * g)//建立有向图G的邻接矩阵存储
{
int i,j,k;
cout<<"请输入顶点数和边数:"<<endl;
cin>>g->n>>g->e;
cout<<"请输入顶点信息(顶点号):"<<endl;
//输入顶点信息,建立顶点表
for(i=0;i<g->n;i++)
cin>>g->vexs[i];
for(i=0;i<g->n;i++)
for(j=0;j<g->n;j++)
g->edges[i][j]=0;//初始化邻接矩阵
cout<<"请输入每条边对应的两个顶点的编号(输入格式为: i,j):"<<endl;
for(k=0;k<g->e;k++)
{
cin>>i>>j; //输入e条边,建立邻接矩阵
g->edges[i-1][j-1]=1;//若加入g->edges[j][i]=1; 则为无向图建立邻接矩阵
}
}
int main()
{
Node * g1;
g1=&Maragh;
Createmaragh(g1);
for(int i=0;i<g1->n;i++)
{
for(int j=0;j<g1->n;j++)
cout<<g1->edges[i][j];
cout<<endl;
}
}
邻接矩阵存储
最新推荐文章于 2024-08-01 10:12:30 发布