棧與佇列應用 迷宮問題(DFS非最短路徑)

2022-01-15 13:29:17 字數 1352 閱讀 6664

//

先輸入行列,在輸入迷宮 以-1 -1 結束

#include#include

#define maxsize 100

#define error -1

#define ok 1

struct

direction

;direction direct[

4] = ,,, };//

方向試探

struct

box;

typedef

struct

//用box宣告棧來存放資料

sqstack;

void initstack(sqstack*s)

s->top = s->base

; s->stacksize =maxsize;

}void push(sqstack*s, box e)

*(s->top) =e;

(s->top)++;

}void pop(sqstack* s, box*e)

*e = *--(s->top);

}int

stacklen(sqstack s)

int isemptystack(sqstack* s) //

判斷棧是否為空 是返回1 不是返回-1

else

//棧不為空

}int** creatmaze(int m, int n) //

初始化

for (int i = 0; i < m; i++) //

將邊界置為1

}for (int i = 1; i < m-1; i++) //

輸入 }

return

maze;

}bool findpath(int m, int n, direction direct, sqstack*s)

; push(s, temp);

while (!isemptystack(s)) //

棧不為空迴圈繼續

; push(s, temp);

x =line;

y =col;

maze[line][col] = -1

;

if (x == m && y ==n)

else

}else}}

return

false;}

int main(void

) printf(

"%d,%d\n

", m, n);

}else

}return0;

}

棧的應用 DFS解迷宮問題

深度優先搜尋dfs求解迷宮問題 找到迷宮的可行路徑的座標,這是乙個搜尋遍歷問題。實現思路 可行的路徑儲存在路徑向量p中,從當前點尋找可行方向,如果可行則next入棧,不行則出棧退回前一點。搜尋可行路徑的 while p.empty 下乙個點 p.back direction if maze next...

棧,佇列實現迷宮問題

include includeusing namespace std int mg 10 10 入口 1,1 出口 8,8 typedef struct gezi typedef struct path void print path p,int pos while k 0 容易出錯,for int...

棧和佇列迷宮問題

define n 6 int maze n n 通過乙個數字來創造乙個6 6的迷宮,其中 0代表牆,1代表能夠走的路。這裡將陣列通過畫圖軟體畫出來,這裡紅色的1代表迷宮的入口,綠色的 1代表迷宮的出口。這個陣列所建立的迷宮是相對複雜的一種迷宮,首先這個迷宮是存在環的 這幾個1,如果你的迷宮函式只是用...