使用栈实现DFS(非递归DFS)
来源:互联网 发布:清茶淘宝助手充值卡 编辑:程序博客网 时间:2024/05/17 23:40
图片摘自:点击打开链接
#include <stdlib.h>#include <stdio.h>#define N 4 //定义图中点个数int a[N][N] = {{-1,1,1,-1},{1,-1,-1,1},{1,-1,-1,1},{-1,1,1,-1}}; //邻接矩阵,-1无边int label[N] = {0}; //标记数组,0未标记//定义栈及其方法struct Stack{ int a[4]; //存入栈元素 int top; //栈顶指针};typedef struct Stack Stack;void addStack(Stack *s, int data) //入栈{ s->top++; s->a[s->top] = data;}int delStack(Stack *s) //出栈{ return s->a[s->top--];}int getTop(Stack *s) //得到栈顶元素{ return s->a[s->top];}//使用栈的非递归DFSvoid dfs(int start){ Stack *s = (Stack *)malloc(sizeof(Stack)); s->top = -1; printf("%d ", start); label[start] = 1; addStack(s, start); while(s->top != -1) { int tmp = getTop(s); int i; for(i=0; i<4; i++) { if(a[tmp][i] == 1 && label[i] == 0) { printf("%d ", i); label[i] = 1; addStack(s, i); break; //此处必须有break,否则构不成DFS } } if(i == 4) delStack(s); } free(s);}int main(){ dfs(0); return 0;}
0 0
- 使用栈实现DFS(非递归DFS)
- DFS采用栈实现非递归
- 自己动手实现非递归DFS
- 使用栈的递归与非递归DFS
- DFS非递归实现图的遍历
- 非递归dfs算法
- 非递归dfs算法
- 非递归dfs算法
- 非递归DFS
- 非递归DFS
- 非递归dfs树
- DFS非递归算法
- DFS(深度优先搜索树) 递归非递归实现
- DFS的非递归写法
- DFS的递归实现
- 【数据结构笔记】4:非递归实现深度优先搜索(DFS)
- 深度优先搜索DFS( 递归+非递归)
- 迷宫求解非递归 DFS BFS(应用栈和队列)
- DVBS/S2在数字电视系统中的应用 二 (DiSEqC/SingleCable的接法)
- storyboard创建tableview
- 自定义注释——Java
- Run JS in Address Bar
- C++从标准输入读取一行字符串
- 使用栈实现DFS(非递归DFS)
- Python3:从数组中随机抽样
- HDU 3746 Cyclic Nacklace (非常有意义的题目)
- Java语句的执行结构
- 环境搭建简述——cocos2d-Lua03
- OC各种疑难
- Java运算符
- LeetCode 14 Longest Common Prefix
- mybatis (1) --快速入门