链式前向星
链式前向星可以说是简化版的邻接表,在做算法题的时候可以很容易的使用
她的存储结构分为两个部分,一个是边表结点,一个是顶点表结点(和邻接表非常类似)
//链式前向星的存储结构
struct edge{
int to; //指向那个顶点
int next; //同起点的下一条边的编号
int weight; //该边的权重
} edges[MAXSIZE];
边表结点中有3个域,to是这个结点指向的那个结点值,next与该边同结点的下一条边的编号(实际上就是edges的下标)
weight是这条边的权重。
edges是一个数组,她的下标就是边的编号,也就是说我们是给边编好号的,一般从0开始编号。
int head[MAXSIZE];
顶点表结点,如果这个顶点在图中的话,那么head值就不为-1而为其第一条边的编号(当然,也就是构造图的时候以该顶点为起点的最后构造的边的编号,这个有点绕)。
加边操作
//加边操作
void addEdge(int st, int ed, int we){
edges[sumE].to = ed;
edges[sumE].weight = we;
edges[sumE].next = head[st];
head[st] = sumE++;
}