邻接表的数组实现
主要思想
首先
u[i] v[i] w[i]用来存储边 而且边的标号为i
输入结束后每一条边都已经编好了号
然后
利用两个数组first和next
first[u[i]]存储的是顶点为u[i]的第一条边在数组中的编号(即i)
next[i]存储的是编号为i的边的下一条边的编号
所以
遍历以点u[i]为顶点的所有时
first[u[i]] 为其第一条边在数组中的编号
next[i]为下一条
利用j = next[i] j = next[j] 去遍历所有的边
直到j等于-1
#include<stdio.h>
const int M = 100;
int v[M], u[M], w[M], first[M+1], next[M+1];
void add(int num)//num表示的是边在数组中的顺序标号
{
if(first[u[num]] == -1) {
first[u[num]] = num;