c++图的创建和初始化
时间: 2024-05-04 12:17:12 浏览: 56
在C语言中,可以使用邻接矩阵或邻接表来表示图。
邻接矩阵的创建和初始化可以按照以下步骤进行:
1. 定义一个二维数组来表示邻接矩阵,数组的大小为n * n,其中n为图中节点的数量。
2. 初始化数组的所有元素为0,表示图中没有任何边。
3. 对于每条边(u, v),将邻接矩阵中对应的元素A[u][v]和A[v][u]设置为1,表示u和v之间有一条无向边。
代码示例:
```c
#define MAXN 100 // 最大节点数
int A[MAXN][MAXN]; // 邻接矩阵
int n; // 节点数量
void init() {
// 初始化邻接矩阵
memset(A, 0, sizeof(A));
}
void add_edge(int u, int v) {
A[u][v] = A[v][u] = 1;
}
```
邻接表的创建和初始化可以按照以下步骤进行:
1. 定义一个结构体来表示每个节点,结构体中包含一个指向相邻节点的链表的指针。
2. 对于每个节点,创建一个链表,并将链表头指针存储在节点的结构体中。
3. 对于每条边(u, v),创建一个新的节点,并将节点插入到u的链表中,表示u和v之间有一条无向边。同样,也将一个新的节点插入到v的链表中。
代码示例:
```c
#define MAXN 100 // 最大节点数
struct Node {
int val; // 节点的值
struct ListNode *next; // 指向相邻节点的链表
};
struct Node G[MAXN]; // 图中的所有节点
int n; // 节点数量
void init() {
// 初始化每个节点的链表为空
for (int i = 0; i < n; i++) {
G[i].next = NULL;
}
}
void add_edge(int u, int v) {
// 创建新节点
struct ListNode *node1 = malloc(sizeof(struct ListNode));
struct ListNode *node2 = malloc(sizeof(struct ListNode));
node1->val = v;
node2->val = u;
node1->next = G[u].next;
node2->next = G[v].next;
G[u].next = node1;
G[v].next = node2;
}
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)