目录
题目描述
写出图的深度优先搜索DFS算法的非递归算法(图采用邻接表形式)。
来源:王道p211.3
解题思路
王道书上给出的非递归是从右端向左端的遍历方式,本文再给出另一种从左端向右端的方式,类似于树的后序非递归。
宏定义
#define SElemType VNode
#define MaxSize 1000
#define MaxVertexNum 100
图定义
typedef struct ArcNode{ //边结点定义
int adjvex;
struct ArcNode* next;
int info;
}ArcNode;
typedef struct VNode{ //顶点结点定义
int data;
struct ArcNode* first;
}VNode,AdjList[MaxVertexNum];
typedef struct{ //邻接表定义
AdjList vertices;
int vexnum,arcnum;
}ALGraph;
栈定义
typedef struct stack{
SElemType data[MaxSize];
int top;
}SqStack;
[注] 上述宏定义和结构体定义是答题时要写的答案,并不是代码实现时的定义,代码实现稍有不同,感兴趣可去“help.h”中查看。