{"title": "C语言邻接表实现图的创建和输出 - 代码示例", "description": "本代码使用C语言实现了图的邻接表表示方式,并提供了图的创建和输出功能。示例代码展示了如何创建一个图,并打印其邻接表结构。", "keywords": "C语言, 图, 邻接表, 数据结构, 图算法, 代码示例", "content": "#include <stdio.h>\n#include <stdlib.h>\n\n#define maxv 100 // 定义最大顶点数\n\ntypedef int infotype; // 定义顶点的类型\n\ntypedef struct anode\n{\n int adjvex;\n struct anode *nextarc;\n int weight;\n} anode;\n\ntypedef struct vnode\n{\n infotype info;\n anode *firstarc;\n} vnode;\n\ntypedef struct\n{\n vnode adjlist[maxv];\n int n, e;\n} adjgraph;\n\nvoid creatematgraph(adjgraph *&G, int A[maxv][maxv], int n, int e)\n{\n G = (adjgraph *)malloc(sizeof(adjgraph));\n int i, j;\n anode *p;\n for (i = 0; i < n; i++)\n G->adjlist[i].firstarc = NULL;\n for (i = 0; i < n; i++)\n {\n for (j = n - 1; j >= 0; j--)\n {\n if (A[i][j] != 0 && A[i][j] != -1)\n {\n p = (anode *)malloc(sizeof(anode));\n p->adjvex = j;\n p->weight = A[i][j];\n p->nextarc = G->adjlist[i].firstarc;\n G->adjlist[i].firstarc = p;\n }\n }\n }\n G->n = n;\n G->e = e;\n}\n\nvoid printgraph(adjgraph *G)\n{\n int i;\n anode *p;\n for (i = 0; i < G->n; i++)\n {\n p = G->adjlist[i].firstarc;\n printf("%d", i);\n while (p != NULL)\n {\n printf(" -> %d(%d)", p->adjvex, p->weight);\n p = p->nextarc;\n }\n printf(" -> NULL\n");\n }\n}\n\nint main()\n{\n int n = 3;\n int e = 3;\n int A[maxv][maxv] = {{0, 1, 2}, {1, 0, 3}, {2, 3, 0}};\n adjgraph *G;\n creatematgraph(G, A, n, e);\n printgraph(G);\n\n return 0;\n}\n"}

C语言邻接表实现图的创建和输出 - 代码示例

原文地址: https://www.cveoy.top/t/topic/qf7l 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录