图的创建,先建立顶点集,随后利用邻接矩阵的方式对其进行初始化,然后选取合适的边进行连接,代码如下
#include <iostream>
using namespace std;const int MAXNUM=1000;
const int IN=65535;
struct mGraph
{
int Nv;//点的数量
int Ne;//边的数量
int G[MAXNUM][MAXNUM]; //邻接矩阵
char data[MAXNUM];
};
struct mEdge
{
int V1,V2;//有向边
int Weight;//边的权重
};
mGraph *CreateGraph(int n)
{
int i,j;
mGraph *graph;
graph=new mGraph;
graph->Nv=n;
graph->Ne=0;
for(i=0;i<graph->Nv;i++)
for(j=0;j<graph->Nv;j++)
graph->G[i][j]=IN;
return graph;
}
void insert(mGraph *graph,mEdge *E)
{
graph->G[E->V1][E->V2]=E->Weight;//有向边
}
mGraph *BuildGraph()
{
mGraph *graph;
mEdge *E;
int nv,i;
cout<<"请输入顶点个数"<<endl;
cin>>nv;
graph=CreateGraph(nv);
cout<<"请输入边数"<<endl;
cin>>graph->Ne;
if(graph->Ne!=0)
for(i=0;i<graph->Ne;i++)
{
cout<<"请输入第"<<i+1<<"个边的方向和权值"<<endl;
cin>>E->V1>>E->V2>>E->Weight;
insert(graph,E);
}
for(i=0;i<graph->Nv;i++){
cout<<"请输入"<<i+1<<"个顶点的权值或内容"<<endl;
cin>>graph->data[i];}
}