结构体的代码如下: struct sss { int v; //终点 int w; //边的权值 int next; }edge[范围]; head数组一般初始化为-1; 对于加边函数add来说,代码是这样的: void add(int u,int v,int w) { //cnt是从0开始的 edge[cnt].w=w; //表示边权值 edge[cnt].v=v; //表示第i条边的终点 edge[cnt].next=head[u]; //表示与第i条边同起点的下一条边存储的位置 head[u]=cnt++; //是先等于cnt,然后再++ //head数组表示以i为起点的第一条边储存的位置,实际上,第一条边存储的位置其实在以i为起点的所有边的最后输入的那个编号,因为是倒着遍历的,所以也就是相反的。 } //遍历点x的所有边 for (int i = head[x];i!=-1;i=a[i].next) {}