玄关
  • 板块学术版
  • 楼主TARGETMINE
  • 当前回复26
  • 已保存回复26
  • 发布时间2023/10/4 22:29
  • 上次更新2023/11/2 15:38:46
查看原帖
玄关
935263
TARGETMINE楼主2023/10/4 22:29
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[名称] = 啥啊

2023/10/4 22:29
加载中...