用c语言写一个邻接表打印函数
时间: 2023-11-16 19:05:34 浏览: 153
好的,下面是一个用C语言编写的邻接表打印函数,可以将邻接表以一定的格式输出到控制台上:
```c
#include <stdio.h>
// 邻接表结构体
typedef struct node {
int val; // 顶点值
struct node* next; // 指向下一个节点的指针
} ListNode;
// 邻接表头结点结构体
typedef struct {
ListNode* head; // 指向邻接表中第一个节点的指针
} AdjList;
// 打印邻接表
void printAdjList(AdjList* adjList, int n) {
int i;
ListNode* p;
for (i = 0; i < n; i++) {
printf("%d: ", i);
p = adjList[i].head;
while (p != NULL) {
printf("%d ", p->val);
p = p->next;
}
printf("\n");
}
}
```
在上面的代码中,我们定义了一个`AdjList`结构体表示邻接表中的头结点,以及一个`ListNode`结构体表示邻接表中的节点。`printAdjList`函数用于打印邻接表,它接受两个参数:一个是邻接表的头结点数组`adjList`,另一个是顶点的个数`n`。
在函数中,我们先用一个循环遍历邻接表中的每一个顶点,然后打印出该顶点的值以及它所连向的所有顶点的值。具体来说,我们用一个指针`p`指向当前顶点的第一个邻居节点,然后不断向后遍历直到`p`为`NULL`,期间每次打印出`p`所指向节点的值。
需要注意的是,这里我们假设每个顶点的值都是一个整数,因此`ListNode`结构体中只有一个`val`字段。如果你的邻接表中的顶点值是其他类型,你需要相应地修改代码。
阅读全文