棧的應用dfs C 實現

2021-09-24 18:21:59 字數 1524 閱讀 2323

深搜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 初始化棧...