PS:我觉得邻接表就是vector,可是实验室学的是邻接表是链式前向星的写法。
所以我觉得邻接表是vector的写法(但是邻接表在数据结构书上的画图有事链式前向星!?),开结构体的是链式前向星,邻接矩阵就是邻接矩阵
链式前向星代码:
struct node
{
int to; // e[i].to 第i条的边的终点
int nex; //e[i].nex 与第i条边同起点的下一条边的存储位置
int w; //该边权值
}e[100020];
int head[100020]; //初始化为-1
//以i为起点的第一条边存储的位置,在以i为起点的所有边的最后输入的那个编号. 保存的是以i为起点的所有边中编号最大的那个,而把这个当作顶点i的第一条起始边的位置.
int tot; // 初始化为-1
void add(int u,int v,int w)
{
e[++cnt].w=w;
e[cnt].to=v;
e[cnt].nex=head[u];
head[u]=tot;
}
//遍历边 倒序
for(int i=head[u];i!=-1;i=edge[i].next) //~i == i!=1 ?