本文提供一個完整的 C 語言迷宮求解程式,採用堆疊回溯演算法。程式包含迷宮初始化、堆疊操作、路徑搜尋、腳印標記與列印功能,並分析「不可解時程式停止運作」的常見原因。
MazeType:含迷宮陣列 maze、腳印陣列 footprint、列數與行數。SqStack:順序堆疊,存放路徑節點 SElemType(步數、座標、方向)。PosType:座標結構 (x, y)。InitMaze:動態配置二維陣列,載入預設迷宮佈局(0 為牆,空白為路)。MazePath:主搜尋迴圈,嘗試四個方向(東南西北),可通則入堆疊,不可通則回溯並標記死路。Pass:檢查座標是否在範圍內、未走過且為通道。NextPos:依方向計算下一座標。Pass 中 M->row、M->column 應為 M->row、M->column,避免越界存取。Push 中 realloc 後需重新計算 top 指標。do-while 應在堆疊為空時結束,否則無限迴圈。完整原始碼已在內文給出,可直接編譯測試。建議搭配除錯器逐步追蹤堆疊變化,深入理解回溯機制。