假設我們使用動態分配的數組實現堆棧。如果數組填滿,我們面臨着一個兩難的局面。從以下選項中,選擇最能描述我們的處理填充數組的策略的那一個。使用動態數組實現的堆棧
(一)我們宣佈一個新的數組,兩倍 大的原稿, 中的數據複製到新的空間 O(n)的總成本,一個序列的n個推動。
(b)我們聲明另一個陣列和保持 軌道其中兩個(或更多) 陣列的包含 堆棧的當前頂部的堆棧 類的私有成員。這使我們每次推O O(1)。
(c)對於一些固定的K,我們創建了一個新的 陣列大小爲n + 2^k的和 數據複製到新的空間,每按壓操作(1)O的平均 成本。 (d)我們避免使用動態分配數組 來實現棧 ,因爲重新分配內存效率不高。
(e)這些答案都不是 合理的回答。
我敢肯定,正確的答案是,但我不明白爲什麼這將是最好的比其他人?其他人是否更實際?他們對我來說似乎沒問題。例如,c
與「a,no?」幾乎相同。爲什麼倍增更有利,然後增加一個常數?其他選項呢?爲什麼他們不工作?
爲什麼加倍更有利:http://stackoverflow.com/questions/5232198/why-does-an-stl-vectors-capacity-grow-exponentially/5232342#5232342 – Cubbi 2011-04-05 03:09:27
呃... homeowrk?回家測試? – Alex 2011-04-05 03:09:40
@亞歷山大 - 作業是允許的,但答案的方式是不同的(至少對我而言)。 – tvanfosson 2011-04-05 03:10:52