/* depth-first traversal
* two methods: recursive and non-recursive
* Graph is stored in an adjacency matrix
*/
#include<stdio.h>
#include<stdlib.h>
#define MAX 10
int sp = 0;//stack pointer
int stack[MAX];
/**********************stack***************************/
void push(int f)
{
if(sp < MAX)
stack[sp++] = f;
else
printf("error: stack full, can't push %d\n", f);
}
int pop(void)
{
if(sp > 0)
return stack[--sp];
else {
printf("error: stack empty\n");
return 0;
}
}
void buildGraph(int adj[][MAX], int n)
{
int i, j;
for(i=0; i<n; i++)
for(j=0; j<n; j++)
{
printf("Enter 1 if there is an edge from %d to %d", i, j);
scanf("%d", &adj[i][j]);
}
}
/* depth-first traverse, start from node x by using recursive method*/
void dfs(int x, int visited[], int adj[][MAX], int n)
{
int j;
visited[x] = 1;
printf("visit node %d\n", x);
for(j=0; j<n; j++)
{
if(adj[x][j] == 1 && visited[j]
图深度优先遍历(递归和栈实现)
最新推荐文章于 2024-12-01 02:18:00 发布
本文介绍了图的深度优先遍历方法,包括递归和非递归(栈实现)两种方式。使用邻接矩阵存储图,并通过示例展示了如何遍历节点并标记已访问状态。

&spm=1001.2101.3001.5002&articleId=7838296&d=1&t=3&u=d36fe462daca42daaa0c7e12151ad02a)
341

被折叠的 条评论
为什么被折叠?



