利用棧實現迷宮求解

2022-05-05 09:03:08 字數 2122 閱讀 9696

如下是每個節點的資料結構

1 typedef struct

direction; //方向

78 typedef struct

point; //位置

1213

14 typedef struct

stacknode*linkstackptr;//節點資料結構

鏈棧及基本操作實現

1 typedef struct

linkstack;//定義鏈棧56

7bool

isempty(linkstack l)

1112 status createlink(linkstack &l)

1819

linkstackptr gettop(linkstack l)

2223

24 status push(linkstack &l,linkstackptr s)

3031

32 status pop(linkstack &l)

37 p=l.top; //出棧

38 l.top=l.top->next;

39free

(p);

40 l.count--;

41return

ok;42 }

以下是預定義及用陣列實現的迷宮地圖:

1 #include2 #include3 #include45

6#define ok 1

7#define error 0

8#define overflow -2910

#define size 8

1112

13int

enterx,entery;//入口座標

14int

exitx,exity;//出口座標

1516

17int map[size][size]=,

19 ,

20 ,

21 ,

22 ,

23 ,

24 ,

25

26};//迷宮地圖,1代表牆壁 0代表路

2728

29void findmap(int

map[size])

38if((j==0||j==size-1)&&map[i][j]==0)42

}43}//搜尋地圖的入口和出口

44if((enterx==exitx)&&(entery==exity))49}

5051

void printmap(int a[size])

56 printf("\n"

);//57}

58 }

以下是主函式和實現:

1

bool panduan(int x,int

y)return

false;5

} //判斷是否是沒走過的迷宮快67

89main() //到達迷宮終點,結束返回

3435

3637

if(q->direct.top==0

)else56}

57}58else

if(q->direct.right==0

)else77}

78}79else

if(q->direct.bottom==0

)else98}

99}100else

if(q->direct.left==0

)else

119}

120 }else

if(q->direct.left==1&&q->direct.right==1&&q->direct.top==1&&q->direct.bottom==1

)124

125126

127128

}129 //判斷是否找到路徑

130if(flag==true

)else

137138

139140

141 }

利用棧求解迷宮問題

利用棧求解迷宮問題 源 include include define m 8 define n 8 define maxsize m n typedef struct box typedef struct sttype int mg m 2 n 2 bool mgpath int xi,int yi...

棧實現迷宮求解問題

總體感觸是 不要著急,一步一步來,問題很容易解決的。首先是要實現乙個迷宮的地圖。明確如何儲存地圖,用vector實現二維陣列,每個元素代表地圖的乙個格仔。需要儲存哪些資訊。一張地圖的某乙個方格需要標示 能否通過,是否走過了。94 struct point 位置資訊可用postype儲存。就是 str...

迷宮求解 棧的實現

一 題目及分析 二 思路 迷宮 迷宮的檔案儲存方式 三 include include define length 10 define width 10 define start hang 1 從0行開始計算row define start lie 1 從0列開始column define end ...