8 順序棧ADT模板簡單應用演算法設計 迷宮問題

2021-10-25 20:15:29 字數 1044 閱讀 4030

目的:使用c++模板設計順序棧的抽象資料型別(adt)。並在此基礎上,使用順序棧adt的基本操作,設計並實現簡單應用的演算法設計。

內容:(1)請參照順序表的adt模板,設計順序棧的抽象資料型別。(由於該環境目前僅支援單檔案的編譯,故將所有內容都集中在乙個原始檔內。在實際的設計中,推薦將抽象類及對應的派生類分別放在單獨的標頭檔案中。參考教材、課件,以及網盤中的順序表adt原型檔案,自行設計順序棧的adt。)

(2)adt的簡單應用:使用該adt設計並實現若干應用順序棧的演算法設計。

應用:在迷宮中找出從入口到出口的路徑是乙個經典的程式設計問題。最簡單的迷宮可以表示為乙個由方塊組成的矩陣,其中每個方塊或為牆,或為通道。要求應用順序棧,設計乙個演算法,在給定的迷宮矩陣maze中,找出從入口到出口的一條簡單路徑,即同乙個通道在路徑上不能出現兩次以上。迷宮在計算機內可以用乙個二維陣列表示,每個陣列元素表示乙個方塊。如果是通道,值為0,反之為1。

深度優先搜尋,然後用棧記錄,方便逆序輸出。

我建議使用pair和stack的stl,手寫stl簡直就是十分滑稽的事情,重複造輪子的事情不要折騰,至於輪子,可以在基礎的85題裡練習,但是這提高還要完手寫就過分了。

#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;

int wall[500][500];

int dp[500][500];

int dir[4][2]= ,,,};

stack > ans;

int dfs(int x,int y,int e_x,int e_y)

int n_x,n_y;

for(i=0;i<4;i++)

dp[n_x][n_y]=1;}}

return 0;

}int main()

cout<<'('

else

return 0;

}

順序棧ADT模板簡單應用演算法設計 回文判斷

問題描述 應用 正讀與反讀都相同的字串行稱為 回文 序列。請使用順序棧,設計並實現乙個演算法,判斷依次讀入的乙個以 為結束符的字串行是否為形如 序列1 序列2 模式的字串行。其中序列1和序列2中都不含有字元 且序列2是序列1的逆序列。例如,a b b a 是屬於該模式的字串行,而 1 3 3 1 則...

迴圈鍊錶ADT模板簡單應用演算法設計 約瑟夫環

偽碼事故現場 分析與總結 問題描述 目的 使用c 模板設計迴圈鍊錶的抽象資料型別 adt 並在此基礎上,使用迴圈鍊錶adt的基本操作,設計並實現單鏈表的簡單演算法設計。內容 1 請使用模板設計迴圈鍊錶的抽象資料型別。由於該環境目前僅支援單檔案的編譯,故將所有內容都集中在乙個原始檔內。在實際的設計中,...

單鏈表ADT模板簡單應用演算法設計 按要求提純鍊錶

偽 異常處理現場 分析與總結 問題描述 目的 使用c 模板設計單鏈表的抽象資料型別 adt 並在此基礎上,使用單鏈表adt的基本操作,設計並實現單鏈表的簡單演算法設計。內容 1 請使用模板設計單鏈表的抽象資料型別。由於該環境目前僅支援單檔案的編譯,故將所有內容都集中在乙個原始檔內。在實際的設計中,推...