深搜dfs
1. 不列印路徑的版本
#include #include #include "mystack"
#define maxrow 10
#define maxline 10
using namespace std;
typedef struct _point
point;
int maze[maxrow][maxline] = ;
stack s;
point sp = , ep = ;
void displymaze()
if (t._x+1 <= 9 && maze[t._x+1][t._y]==0) // 下
if (t._y-1 >= 0 && maze[t._x][t._y-1]==0) // 左
if (t._y+1 <= 9 && maze[t._x][t._y+1]==0) // 右
2. 列印路徑的版本
另外維護乙個二維陣列,上面每個點記錄走到這個點的前一步,最後倒推就可得到正確路徑
通過棧的方式可以把倒序的路徑正序輸出
#include #include #include #include "mystack"
#define maxrow 10
#define maxline 10
using namespace std;
// 棧的鏈式儲存
typedef struct _point
point;
point prepts[maxrow][maxline];
int maze[maxrow][maxline] = ;
stack s;
point sp = , ep = ;
void displymaze()
if (t._y+1 <= 9 && maze[t._x][t._y+1]==0) // 右
if (t._x-1 >= 0 && maze[t._x-1][t._y]==0) // 上
if (t._x+1 <= 9 && maze[t._x+1][t._y]==0) // 下
深度優先遍歷 DFS C實現
深度優先遍歷的主要思想 首先以乙個未被訪問過的頂點作為起始頂點,沿當前頂點的邊走到未被訪問過的頂點 當沒有未被訪問的頂點時,則回到上乙個頂點,繼續試探試探訪問別的頂點,直到所有的頂點都被訪問過.顯然,深度優先遍歷是沿著圖的某一條分支遍歷直到末端,然後回溯 su 再沿著另一條進行同樣的遍歷,直到所有的...
深度優先搜尋DFS C 實現
使用鄰接矩陣 棧的形式實現深度優先搜尋,棧中儲存訪問過的節點,後進先出的結構可以讓他回退搜尋未訪問過的節點。dfs,使用 鄰接矩陣 棧 實現 include include using namespace std define max verts 20 class vertex public boo...
棧的實現與應用
棧 棧 stack 是限定盡在表尾進行插入或刪除操作的線性表。與線性表類似,棧也有兩種儲存表示方式。下面是順序棧的實現。include include define maxsize 100 typedef char elemtype 定義順序棧 typedef struct sqstack 初始化棧...