已知一个有向图的邻接表,编写C语言算法建立其逆邻接表
时间: 2023-11-27 17:45:27 浏览: 289
C++实现有向图邻接表的构建
为了建立有向图的逆邻接表,我们需要遍历整个邻接表,将每个顶点的出边转化为入边,然后将这些入边插入到相应的顶点的逆邻接表中。具体实现步骤如下:
```c
void InvertAdjList(AdjList gin, AdjList gout) {
int i, j;
ArcNode *p, *s;
for (i = 1; i <= n; i++) {
// 复制顶点信息
strcpy(gin[i].vertex, gout[i].vertex);
// 初始化逆邻接表
gin[i].firstarc = NULL;
}
for (i = 1; i <= n; i++) {
// 遍历邻接表
p = gout[i].firstarc;
while (p != NULL) {
j = p->adjvex;
// 将边插入到相应的逆邻接表中
s = (ArcNode*)malloc(sizeof(ArcNode));
s->adjvex = i;
s->nextarc = gin[j].firstarc;
gin[j].firstarc = s;
p = p->nextarc;
}
}
}
```
阅读全文