主函式測試例項
// - - - - - 棧的順序儲存表示 - - - - -
#define stack_init_size 100
//儲存空間初始分配量
#define stackincerment 10
//儲存空間分配增量
typedef
bool status;
typedef
struct
sqstack;
// - - - - - 基本操作的函式原型說明 - - - - -
status initstack
(sqstack& s)
;//構造乙個空棧s
status destroystack
(sqstack& s)
;//銷毀棧s,s不再存在
status clearstack
(sqstack& s)
;//把s置為空棧
status stackempty
(sqstack s)
;//若棧s為空棧,則返回true,否則返回false
intstacklength
(sqstack s)
;//返回s的元素個數,即棧的長度
status push
(sqstack& s, selemtype e)
;//插入元素e為新的棧頂元素
status pop
(sqstack& s, selemtype& e)
;//若棧不空,刪除s的棧頂元素,用e返回其值,並返回true;否則返回false
// - - - - - 基本操作的演算法描述(部分) - - - - -
status initstack
(sqstack& s)
// initstack
status destroystack
(sqstack& s)
// destroystack
status clearstack
(sqstack& s)
s.top-
>ord = s.top-
>di = s.top-
>seat.x = s.top-
>seat.y =0;
s.base = s.top;
return
true;}
// clearstack
status stackempty
(sqstack s)
// stackempty
intstacklength
(sqstack s)
return i;
}status push
(sqstack& s, selemtype e)
*s.top = e;
s.top++
;return
true;}
// push
status pop
(sqstack& s, selemtype& e)
// pop
#define m 25
#define n 25
typedef
int*
* mazetype;
//定義迷宮型別為二維陣列指標
typedef
struct
postype;
//座標位置的元素型別
typedef
struct
selemtype;
//棧的元素型別
#include
"stack.h"
// - - - - - 基本操作的函式原型說明 - - - - -
status initmaze
(mazetype& maze)
;//初始化迷宮
status destroymaze
(mazetype& maze)
;//銷毀迷宮
status clearmaze
(mazetype& maze)
;//清空迷宮
status createmaze
(mazetype& maze,
int m,
int n)
;//隨機生成長m+1寬n+1的迷宮,0牆1路,迷宮邊界是牆
status printmaze
(mazetype maze,
int m,
int n)
;//列印迷宮, x代表牆,*代表路
status pass
(mazetype maze, postype p)
;//若當前位置p可以通過且未走過,maze[p.x][p.y]=1,則返回true;
//否則返回false
void
footprint
(mazetype& maze, postype p)
;//留下足跡,當前位置p已經走過,maze[p.x][p.y]=2
void
markprint
(mazetype& maze, postype p)
;//留下不能通過的標記,maze[p.x][p.y]=0
postype nextpos
(postype p,
int di)
;//返回當前位置p的下一位置,東di=1,南di=2,西di=3,北di=4
selemtype setcurselem
(int ord, postype seat,
int di)
;//返回對應序號ord座標seat及方向di的棧的元素
status mazepath
(sqstack& s, mazetype maze, postype start, postype end)
;//若迷宮maze存在從入口start到出口end的通道,則求得一條存放在棧中
//(從棧底到棧頂),並返回true;否則返回false
// - - - - - 基本操作的演算法描述 - - - - -
status initmaze
(mazetype& maze)
return
true;}
status destroymaze
(mazetype& maze)
status clearmaze
(mazetype& maze)
status createmaze
(mazetype& maze,
int m,
int n)
}return
false;}
status printmaze
(mazetype maze,
int m,
int n)
cout <<
'\n';;
}return
true;}
status pass
(mazetype maze, postype p)
void
footprint
(mazetype& maze, postype p)
void
markprint
(mazetype& maze, postype p)
postype nextpos
(postype p,
int di)
return p;
}selemtype setcurselem
(int ord, postype seat,
int di)
status mazepath
(sqstack& s, mazetype maze, postype start, postype end)
//if
else
//while
if(e.di <4)
//if
}//if
}//else
}while(!
stackempty
(s))
;return
false
;}
project3.2.4maze.cpp
#include
using
namespace std;
#include
"maze.h"
#include
intmain()
selemtype* p = s.base;
while
(p != s.top)
i++;if
(i %4==
0)cout <<
'\n'
; p++;}
cout <<
"\n輸出走過的迷宮\nx 牆和死路; * 沒有走的路; # 通路:\n"
簡單優化
迷宮自動生成程式
這學期開始時本來打算寫個自動生成迷宮的程式。但當時水平所限,寫不出來。假期這兩天把這個想法付諸實施,現在想想這個程式挺有意思的。程式和道理都非常簡單,有些類似於走迷宮。思路是這樣 1.首先假設迷宮場地是充滿牆壁沒有道路的。我們的工作其實就是把迷宮 挖 出來。不妨把開始時的迷宮看成一些小的 房間 每個...
C 自動生成迷宮遊戲
運用並查集自動生成迷宮地圖,並運用佇列和棧尋找迷宮通路並列印出來 incaighfalrtlude include include include include using namespace std using std queue using std stack typedef struct p...
AI 隨機迷宮 迷宮求解
本文記錄了,人工智慧中簡單的搜尋策略中的路徑搜尋策略中的a 演算法,來實現迷宮尋路的問題.這只是一次本人的課外作業 完整的程式原始碼已經傳送到我的git.這裡只記錄了我的思路和感想以及收穫.產生隨機迷宮 迷宮求解沒有迷宮怎麼可以呢.而本人是個懶人,每次都要手動輸入迷宮,重複性的工作讓我很不爽.你可以...