2016-09-17 53 views
0

Garwick算法是一種處理堆棧溢出的算法。我知道原始算法是什麼以及它是如何工作的。然而,修改了Garwick的算法,我對它有一個非常模糊的描述,「甚至堆棧向左增長,而奇堆棧向右」。什麼是修改加維克算法?

從我的講義中修改後的算法的說明如下,它也很模糊。

enter image description here

誰能幫助提供更多的細節關於這個改進算法,或者提供一些參考?謝謝!

回答

1

如果您需要將2個堆棧放在一個數組中,那麼您可以在數組的起始處放置一個堆棧,隨着元素的推進而向上增長,最後一個堆棧向下增長。

這樣你就不需要擔心重新分配空閒空間時,其中一個填滿了,因爲它們都使用相同的自由空間,你可以自由地推到要麼堆棧,直到整個陣列充分。

您引用的修改的Garwick算法將此想法擴展到2個以上的堆棧。使用Garwick原始算法,陣列被分成N個區段,每個區段有一個堆棧,所有堆棧都在同一個方向上生長。在修改後的版本中,陣列被分成N/2個分段,每個分段都有一個堆棧,一個從段開始向上增長,另一個從結尾向下增長。

在修改後的算法中,當一個分段填滿時,自由空間在分段(堆棧對)之間重新分配,與原始算法在單個堆棧間重新分配空間的方式相同。