用C语言代码,实现图的存储:邻接矩阵或邻接表
时间: 2025-01-01 07:42:17 浏览: 73
在C语言中,我们可以使用数组(邻接矩阵)或链表(邻接表)两种常见的数据结构来存储图。
**1. 邻接矩阵:**
邻接矩阵是一个二维数组,其中行代表源节点,列代表目标节点,值表示两个节点之间是否存在边。如果节点i到j有边,则对应位置的值为1或非零;若无边则为0。例如:
```c
int graph[5][5] = {
{0, 1, 1, 0, 0},
{1, 0, 1, 1, 0},
{1, 1, 0, 0, 1},
{0, 1, 0, 0, 1},
{0, 0, 1, 1, 0}
};
```
这里我们创建了一个5x5的矩阵,表示一个包含5个节点的简单图。
**2. 邻接表:**
邻接表则是将每个节点连接到其相邻节点的列表。每条边由一对指向相连节点的指针表示。如用链表实现:
```c
typedef struct Node {
int vertex; // 节点编号
struct Node* next; // 指向下一个相邻节点的指针
} Node;
Node* adjacencyList[5]; // 数组用于存储每个节点的链表
// 初始化邻接表
adjacencyList[0] = (Node*)malloc(sizeof(Node)); // 添加第一个节点
adjacencyList[0]->vertex = 1;
adjacencyList[0]->next = NULL;
// ... 继续添加其他节点及其邻居...
adjacencyList[1] = (Node*)malloc(sizeof(Node));
adjacencyList[1]->vertex = 0;
adjacencyList[1]->next = adjacencyList[0];
// ... 以此类推
```
阅读全文
相关推荐


















