**:
queue.h
#define stack_init_size100
#define stackincrement10
#define statusbool
#define error0
#define overflow-2
#define ok1
struct postype
;typedef struct
selemtype;
typedef struct
sqstack;
status initstack(sqstack &s);
status destorystack(sqstack &s);
status stackempty(sqstack s);
int stacklength(sqstack s);
status gettop(sqstack s, selemtype &e);
status push(sqstack &s, selemtype e);
status pop(sqstack &s, selemtype &e);
queue.cpp
#include
#include "queue.h"
status initstack(sqstack &s)
status destorystack(sqstack &s)
selemtype e;
for( ; s.base != s.top; )
return ok;
}status stackempty(sqstack s)
return true;
}int stacklength(sqstack s)
return i;
}status gettop(sqstack s, selemtype &e)
status push(sqstack &s, selemtype e)
*s.top++ = e;
return ok;
}status pop(sqstack &s, selemtype &e)
#include
#include "queue.h"
#define mazetype int
//迷宮陣列,0表示可以通過,1表示不能通過
int array[10][10]=,,
,,,,
,,,,
};//棧
/* postype 1=東 2=南 3=西 4=北*/
sqstack s;
postype start = ;
postype end = ;
= 1;
= 1;
= 8;
= 8;
statuspass(postype &pos);
voidfootprint(postype &pos);
postype nextpos(postype &pos, int direction);
voidmarkprint(postype &pos);
status mazepath(mazetype maze, postype start, postype end);
voidoutput();
void main()
else
cout<
cout
bool ispass = mazepath(1, start, end);
if (ispass )
else
}statuspass(postype &pos)
return false;
}voidfootprint(postype &pos)
postype nextpos(postype &pos, int direction)
}voidmarkprint(postype &pos)
}status mazepath(mazetype maze, postype start, postype end)
else
}if (e.di < 4 )
}} while (!stackempty(s));
return false;
}voidoutput()
else if ((array[x][y] !=1) && (array[x][y] !=-2))
else
cout<
cout
}執行結果:
利用堆疊實現迷宮問題的求解
解決迷宮問題的常用演算法就是回溯法,基本思想就是 從起點出發,順著乙個方向探索,若能夠走通,則繼續往前走,若不能夠走通,則沿原路退回一步,換乙個方向繼續探索,直至找到乙個可行的通路。此時從可行通路的到達終點的前一步進行回溯,即先從終點退一步到達終點前的第乙個位置,若該位置的四個方向還沒有探索完,則換...
求解迷宮問題
求解迷宮問題 include using namespace std const int m 6 const int n 8 int maze m 2 n 2 m n大小的迷宮,0可前進,1通行受阻。並且在迷宮的周圍鑲上邊框 int mark m 2 n 2 儲存訪問標記,0未訪問,1已訪問 int...
迷宮問題求解
對於迷宮問題的求解,我們最後輸出的是迷宮的路徑,故符合佇列的先進先出特性,所以我們採用佇列的方式對迷宮進行求解 首先我們將建立乙個二維陣列 自定義初始化迷宮 7 7 int arr n n 二維陣列邊界用0填充,使之區域封閉,在實現過程 現陣列越界問題 接下來是 include include de...