#include #define max 30
typedef struct
box;
typedef struct
stack;
int map[10][10]=,,,
,,,,
,,
};int search(int beginx,int beginy,int endx,int endy)
else
}return 1;
}find = 0;
while (di<4&&find==0)
if (map[i][j] == 0)
}if (find == 1)
else
}return 0;
}int main()
return 0;
}
棧的結構設計如下:
typedef
struct
box;
typedef
struct
地圖(二維陣列):
int map[10]
[10]=
,,,,
,,,,
,};
迷宮的核心**:
int
search
(int beginx,
int beginy,
int endx,
int endy)
else
}return1;
} find =0;
while
(di<
4&&find==0)
if(map[i]
[j]==0)
}if(find ==1)
else
}return0;
}
第一段:
stack s;
s.top =-1
; s.top++
;//將起點放入棧中
s.data[s.top]
.x = beginx;
s.data[s.top]
.y = beginy;
s.data[s.top]
.di =-1
;//還未選擇方向,所以賦值為-1
map[beginx]
[beginy]=-
1;//map為地圖
//因為起點是我們走過的第乙個點
//所以我們將他賦值為-1,後面所有走過的點都賦值為-1
將起點放入棧中,初始化棧。
第二段:
while
(s.top>-1
)
while迴圈的條件,有一種情況沒有路徑,所以這一點是為了判斷是否能出去,倘若連起點都被棧彈出了,棧為空,就代表沒有路徑。
該函式會返回0,代表無法行走。
第三段:
i = s.data[s.top]
.x; j = s.data[s.top]
.y; di = s.data[s.top]
.di;
將棧頂元素的行列和儲存下乙個方向的變數di賦值給普通變數。
第四段:
//結束,輸出結果
if(i == endx&&j == endy)
else
}return1;
}
將棧中的資料列印,結束的標誌就是棧頂儲存的點和出口點一樣。
第五段:
find =0;
while
(di<
4&&find==0)
//判斷是否找到該點的方向
//如果是可走的find賦值為1
if(map[i]
[j]==0)
}
第六段:
if
(find ==1)
//可走就入棧
else
第七段:
int
main()
return0;
}
資料結構 迷宮和棧 C語言
include stdio.h include stdlib.h include time.h define mazesize 10 define ok 1 define error 0 define true 1 define false 0 define stack init size 100 ...
資料結構 棧 c 迷宮
1,棧的基本操作和迷宮的資料結構 includeusing namespace std define stack init size 100 define stack increment size 100 typedef structposttype 座標結構 typedef struct bloc...
資料結構 棧 迷宮(c )
迷宮旅行遊戲 專案簡介 迷宮只有兩個門,乙個門叫入口,另乙個門叫出口。乙個騎士騎馬從入口走進迷宮,迷宮中設定很多牆壁,對前進方向形成了多處障礙。騎士需要在迷宮中尋找通路以到達出口。設計思路 在求解過程中,為了保證在到達某一點後不能向前繼續行走 無路 時,能正確返回前一點以便繼續從下乙個方向向前試探,...