我希望各位看官能在理解邻接矩阵的基本原理的基础上来观看本代码君的代码
#include<cmath>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<cstdio>
#include<iostream>
using namespace std;
#define MaxValue 65535
#define SIZE 20
typedef struct
{
char Vertex[SIZE];//顶点信息
int IsTrave[SIZE];//点是否被遍历
int EdgeNum;//边数
int VertexNum;//顶点数
int arcs[SIZE][SIZE];//权值
}GraphMatrix;
GraphMatrix *CreateGraph() //构造图(邻接矩阵)
{
char end,start;
int head,tail;
int weight;
GraphMatrix *GM;
if((GM=(GraphMatrix *)malloc(sizeof(GraphMatrix)))==NULL)
{
cout<<"内存分配失败"<<endl;
exit(1);
}
printf("请输入有多少个顶点和边数\n");
cin>>GM->VertexNum>>GM->EdgeNum;
printf("请输入各个顶点的信息\n");
for(int i=0;i<GM->VertexNum;i++)
{
cin>>GM->Vertex[i];
}
printf("请输入各边的顶点和权值\n");
for(int k=0;k<GM->EdgeNum;k++)
{
cin>>start>>end>>weight;
for( head=0;start!=GM->Vertex[head];head++);
for( tail=0;end!=GM->Vertex[tail];tail++);
GM->arcs[head][tail]=weight;
}
return GM;
}
void OutGraph(GraphMatrix *GM)//输出图
{
cout<<" ";
for(int i=0;i<GM->VertexNum;i++)
cout<<GM->Vertex[i]<<" ";
cout<<"\n";
for(int i=0;i<GM->VertexNum;i++)
{
cout<<GM->Vertex[i]<<" ";
for(int j=0;j<GM->VertexNum;j++)
{
cout<<GM->arcs[i][j]<<" ";
}
printf("\n");
}
}
int main()
{
GraphMatrix *GM;
GM=CreateGraph( );
OutGraph(GM);
return 0;
}
看结果