首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

迷宮求解程式:堆疊回溯法完整 C 實作與除錯

     編輯:程式設計疑難解答

本文提供一個完整的 C 語言迷宮求解程式,採用堆疊回溯演算法。程式包含迷宮初始化、堆疊操作、路徑搜尋、腳印標記與列印功能,並分析「不可解時程式停止運作」的常見原因。

核心資料結構

  • MazeType:含迷宮陣列 maze、腳印陣列 footprint、列數與行數。
  • SqStack:順序堆疊,存放路徑節點 SElemType(步數、座標、方向)。
  • PosType:座標結構 (x, y)。

關鍵演算法流程

  1. InitMaze:動態配置二維陣列,載入預設迷宮佈局(0 為牆,空白為路)。
  2. MazePath:主搜尋迴圈,嘗試四個方向(東南西北),可通則入堆疊,不可通則回溯並標記死路。
  3. Pass:檢查座標是否在範圍內、未走過且為通道。
  4. NextPos:依方向計算下一座標。

常見崩潰原因與修正

  • 邊界檢查缺失:Pass 中 M->row、M->column 應為 M->row、M->column,避免越界存取。
  • 堆疊擴容邏輯:Push 中 realloc 後需重新計算 top 指標。
  • 迴圈結束條件:do-while 應在堆疊為空時結束,否則無限迴圈。

完整原始碼已在內文給出,可直接編譯測試。建議搭配除錯器逐步追蹤堆疊變化,深入理解回溯機制。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved