堆盤子問題

題目:設想有一堆盤子,堆太高可能會倒下來。因此,在現實生活中,盤子堆到一定高度時,我們就會另外堆一堆盤子。請實現數據結構SetOfStacks,模擬這種行爲。SetOfStacks應該由多個棧組成,並且在前一個棧填滿時新建一個棧。此外,SetOfStacks.push()和SetOfStacks.pop()應該與普通棧的操作方法相同(也就是說,pop()返回的值,應該跟只有一個棧時的情況一樣)。

進階:實現一個popAt(int index)方法,根據指定的子棧,執行pop操作。

        思路:前面一個問題比較簡單,數據結構可以用棧數組或者棧容器,同時記錄最後一個棧的位置,爲了壓棧和出棧方便。

第二個問題有些麻煩,如果指定棧彈出元素,那麼被彈出棧的元素如果之前是滿的,彈出以後就多了一個空位,那麼後面的棧的元素就要取過來補充,後面的棧可能需要再從它的下一個棧取棧底元素補充。當然不保證前面的棧都是滿也是可以的,具體要看題目的要求,實現起來代碼過長,就略過了。

發佈了147 篇原創文章 · 獲贊 18 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章