/* 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
图深度优先遍历(递归和栈实现)
最新推荐文章于 2024-08-09 16:35:49 发布
本文介绍了图的深度优先遍历方法,包括递归和非递归(栈实现)两种方式。使用邻接矩阵存储图,并通过示例展示了如何遍历节点并标记已访问状态。
摘要由CSDN通过智能技术生成