線性表之棧實現迷宮路線自動查詢

2021-10-23 01:49:14 字數 1468 閱讀 2568

問題描述:要實現自動查詢乙個迷宮的起點到終點的路線,不論是否是最佳,然後如果該路線存在,則輸出該路線各個點的座標。用棧來實現這這個程式

下圖是隨機測試時的一張樣例圖,程式的輸出為下面樣式。

這裡利用偽**自動生成的迷宮,可能需要多執行幾次才能有路徑可解的迷宮,以上為某次程式執行的結果顯示,

關於整個程式需要知道的關鍵點:

1.我們採用0為通路,1為阻塞;

2.這裡人的走向di採用上0,右1,下2,左3;

3.在自動生成迷宮時注意最外圍全為1(防止di進行試探時資料溢位);

3.每走過乙個方塊,將其設定為mg【i】【j】=1(防止行走成死迴圈);

對於main函式,一定要在mg陣列外圍全設定為1,例如:

外圍數字全為1,1表示阻塞。

關於ismg函式的l程式流程簡圖(這裡的第2到第5在乙個while(top>-1)的迴圈裡面):

該程式用c++實現**如下,c語言也可,稍加改變即可。

#include

#include

#include

#define r 8

//方塊的座標,位態

typedef

struct

box;

//建立順序棧的型別

typedef

struct

sqstack;

int mg[r]

[r];

//判斷是否存在出口

bool ismg

(int ii,

int ij,

int ei,

int ej)

return true;

} find=0;

while

(di<

4&&find==0)

if(mg[i]

[j]==

0)find=1;

}if(find==1)

else

}printf

("迷宮的出口路徑不存在。\n");

}int

main

(void

) mg[1]

[1]=

0;for(i=

0;i)printf

("\n");

}ismg

(ii,ij,ei,ej)

;return0;

}

線性表之棧

一種只能在一端進行插入或刪除操作的線性表被稱為棧,其中允許刪除或插入的一端為棧頂,另一端為棧底,棧底固定不變 棧的特點 先進後出,例如彈夾,先裝的子彈最後才能出 按照儲存結構可以分為兩種棧 順序棧的結構體定義 typedef struct sqstack 鏈棧結構體定義 typedef struct...

線性表之順序棧C 實現

線性表之順序棧 棧是限定僅在表尾 棧頂 進行插入刪除操作的線性表,filo 先進後出 一 順序棧的標頭檔案 seqstack.h 1 順序棧標頭檔案 2 include3 using namespace std 4 設定順序棧的大小 5const int stacksize 10 6 templat...

線性表之陣列實現棧結構

棧結構的陣列實現是用乙個一維陣列存放資料,資料每次從隊尾加入,刪除時也從隊尾刪除,要實現這種增刪操作需要使用乙個記錄下標的指標 top 來指向棧頂。當新增元素時新增到 arr top 1 位置,當要做刪除操作時 使top 指向倒數第二個元素,使其稱為新棧頂。舊棧頂則被忽略,當其所佔空間要使用時直接覆...