用c语言代码实现邻接表的深度优先遍历和广度优先遍历
时间: 2024-01-07 22:16:36 浏览: 84
c++实现图的邻接表深度优先遍历,广度优先遍历
好的,请稍等我一下。
邻接表的深度优先遍历可以使用递归或者栈的方式实现。以下是使用栈的方式:
```c
void DFS(int v) {
bool visited[MAX_SIZE];
init(visited);
Stack S;
push(&S, v);
while (!isEmpty(&S)) {
int cur = pop(&S);
if (!visited[cur]) {
visited[cur] = true;
printf("%d ", cur);
Node* temp = graph[cur].next;
while (temp) {
if (!visited[temp->val]) {
push(&S, temp->val);
}
temp = temp->next;
}
}
}
}
```
邻接表的广度优先遍历可以使用队列实现。以下是实现代码:
```c
void BFS(int v) {
bool visited[MAX_SIZE];
init(visited);
Queue Q = {0, 0, {0}};
visited[v] = true;
printf("%d ", v);
enQueue(&Q, v);
while (!isEmpty(&Q)) {
int cur = deQueue(&Q);
Node* temp = graph[cur].next;
while (temp) {
if (!visited[temp->val]) {
visited[temp->val] = true;
printf("%d ", temp->val);
enQueue(&Q, temp->val);
}
temp = temp->next;
}
}
}
```
以上就是邻接表的深度优先遍历和广度优先遍历的实现。希望可以帮到你。
阅读全文