C語言資料結構 棧實現迷宮

2021-10-24 12:41:53 字數 2181 閱讀 5869

#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 )

迷宮旅行遊戲 專案簡介 迷宮只有兩個門,乙個門叫入口,另乙個門叫出口。乙個騎士騎馬從入口走進迷宮,迷宮中設定很多牆壁,對前進方向形成了多處障礙。騎士需要在迷宮中尋找通路以到達出口。設計思路 在求解過程中,為了保證在到達某一點後不能向前繼續行走 無路 時,能正確返回前一點以便繼續從下乙個方向向前試探,...