图的概念:
图(graph)是由两个集合构成,一个是非空但有限的顶点集合V,另一个是描述顶点之间的关系。
图可以表示为G=(V,E)每条边是一顶点对(V,W)且V,WEV。通常用|V|表示顶点的数量,用|E|表示顶点的数量,用|E|表示边的数量
图是由顶点集合及顶点的关系组成的一种数据结构:G=(V,E),其中:顶点集合V={(x,y)|x,y|x,y属于V&&path(x,y)}是顶点间关系的有穷集合,也叫做边的集合。
顶点和边:
图中结点成为顶点,第i个顶点记为vi。两个顶点vi和vj之间有一条边,图中的第k条边记作ek,ek=(vi,vj)或<vi,vj>
代码
#include <iostream>
using namespace std;
//图的储存
//点集合 边集合
const int vertex=10;//点的数量
const int edge= vertex*(vertex-1);
int v[vertex];//点集合 v[i] 表示第i个节点编号是j
struct edges{//单条边结构体
int from;//该条边的左顶点
int to;//该条边的右顶点
double w;//边的长度
};
edges e[edge+1];//边集合
int cnt=1;
void add(int u,int v,int w){
e[cnt].from=u;//记录第cnt条边的左项顶点是u
e[cnt].to=v;//记录第cnt条边的右项顶点是v
e[cnt].w=w;//记录第cnt条边的权值
cnt++;//换下一条边去读
}
int main()
{
for(int i=1;i<=5;i++){
int u,v,w;
cin>>u>>v>>w;//单向
add (u,v,w);//双向
add (v,u,w);
}
for(int i=1;i<=5;i++)printf("e[%d].from=%d,e[%d].to=%d",i,e[i].to) ;
return 0;
}