const int N = 5; // 图中节点数目
const int M = 10; // 图中边的最大数量
int h[N]; // 节点的邻接链表的头指针
int e[M]; // 边的终点
int nex[M]; // 每一条边的下一条边的编号
int idx = 0; // 边索引
void add(int a, int b) {
e[idx] = b;
nex[idx] = h[a];
h[a] = idx;
idx++;
}
int main() {
memset(h, -1, sizeof(h)); // 初始化邻接表为空
// 添加边
add(1, 2);
add(1, 5);
add(2, 3);
add(3, 4);
add(4, 5);
add(5, 1);
// 打印邻接表
for (int i = 1; i <= N; i++) {
cout << "h[" << i << "] -> ";
for (int j = h[i]; j != -1; j = nex[j]) {
cout << e[j] << " -> ";
}
cout << endl;
}
return 0;
}
能解释一下add的函数吗,一直不懂
他是怎么存储节点的名称的 是a[i] = 节点的名称 a[名称] = 啥啊