1. 程式人生 > >棧結構應用-試探回溯法

棧結構應用-試探回溯法

試探回溯法的具體內容就不贅述了,談談棧結構在其中起到的作用

在書中提到一個神話故事:忒修斯的法寶,這個法寶是進入迷宮時使用的繩子,用於記錄從迷宮的起點到當前位置所走過的路徑,以防止在迷宮中迷茫,找不到來時的路。而將試探回溯法類比到這個迷宮問題時,這個棧結構起到的就相當於繩子的作用。

考慮棧結構更高效的原因,從不採用棧結構而是其它資料結構來記錄走過的路徑的效果對比著來看。(注意,這裡採用某一資料結構的目的都是為了記錄走過的路徑)

如果是使用連結串列結構來記錄走過的路徑,那麼如果當前節點無路可走時,需要回到上一個位置,即需要找到連結串列中上一個節點所在的地址,將其賦予指向當前節點的指標。那麼可知,這個連結串列結構的節點還需要記錄在連結串列中上一個節點的地址,需要類似雙向連結串列中的節點這樣的節點結構,如果當路徑很長時,這就會造成空間的浪費,同時操作起來也較為繁瑣。但是如果採用棧結構,只需要藉助pop和push方法,就能得到走過路徑中當前節點的上一個節點的地址和將新節點加入路徑中,所以無論是從空間複雜度還是操作的方便程度上來看,棧結構都是這個繩子很好的表示方式。