方法一:邻接矩阵建图
#include<bits/stdc++.h> #define Max 100 using namespace std; struct node{ int v;//顶点数 int e;//边数 int G[Max][Max]; int Data[Max];//存顶点的数据 }; struct Enode{ int v1,v2;//有向边 int w;//权重 }; node *creat(int V);//初始化一个有顶点无边的图 void In(node *p,Enode *E);//向node中插入边 int main() { int v,e; node *p; cin>>v; p=creat(v); cin>>p->e; if(p->e!=0) { Enode *E=(Enode*)malloc(sizeof(Enode)); for(int i=0;i<p->e;i++) { cin>>E->v1>>E->v2>>E->w; In(p,E); } } //如果顶点有数据的话读入数据 for(int i=0;i<v;i++) cin>>p->Data[i]; for(int i=0;i<p->v;i++) { for(int j=0;j<p->v;j++) cout<<i<<"->"<<j<<"的权重 "<<p->G[i][j]<<" "; cout<<endl; } for(int i=0;i<p->v;i++) cout<<"顶点"<<i<<"的数据 "<<p->Data[i]<<endl; return 0; } node *creat(int V) { node *p=(node*)malloc(sizeof(node)); p->v=V; p->e=0; for(int i=0;i<p->v;i++) for(int j=0;j<p->v;j++) { p->G[i][j]=0; } return p; } void In(node *p,Enode *E) { p->G[E->v1][E->v2]=E->w; p->G[E->v2][E->v1]=E->w; }
方法二 :邻接矩阵的简写版
#include<bits/stdc++.h> #define Max 100 using namespace std; int G[Max][Max]; int main() { int v; cin>>v; for(int i=0;i<v;i++) for(int j=0;j<v;j++) { G[i][j]=0; } int e; cin>>e; int v1,v2,w; for(int i=0;i<e;i++) { cin>>v1>>v2>>w; G[v1][v2]=w; G[v2][v2]=w; } return 0; }
方法三:邻接表建图