棧可以用陣列代替麼

時間 2021-06-01 19:51:07

1樓:易水寒

棧邏輯上先入後出,物理儲存上可用連續記憶體(作業系統中的棧,類似陣列),也可以用非連續記憶體(鍊表實現)。

隨機儲存指可以O(1)時間讀、寫任何位置

2樓:劉雲賓

首先這個隨機元素我很不理解是否指的是任一元素呢這句話是對的,通過下標可以隨機訪問任意陣列元素,時間複雜度為 O(1)

既然要限制處理順序陣列不也能很輕易的做到嗎陣列確實可以做到,但是,我們封裝成棧更好,原因如下:

封裝成棧,可以遮蔽內部的實現細節,使得程式結構更清楚封裝成棧,可以減少出錯的可能性,每次使用 push() pop(),比每次寫具體的實現方便多了

封裝成棧,可以集中處理各種情況,比如,是用鍊表還是靜態陣列,還是動態陣列實現,如果使用陣列,初始化大小是多少,太大的話會浪費空間,當 pop() 時,棧為空怎麼辦,可能的記憶體洩漏等等

3樓:GarfieldKwong

首先你要清楚棧的特性是什麼。棧的定義是只能對棧頂進行操作。

其次,要清楚陣列的特性。如果說的是靜態陣列,陣列的容量是編譯時就確定了,不能超過最大容量。而動態陣列的話,當大小超過預先分配的容量的話就需要重新分配記憶體,而且要把舊的元素挪到新的記憶體裡去。

說到底就是因為陣列的連續的記憶體空間,這個特性對於棧來說是沒必要的。

所以結論就是可以,只要嚴格按照棧的規定來操作就可以。但是不建議,因為重新分配記憶體這個消耗並不小。用鍊表更合適。

4樓:Ikaros

隨機訪問的陣列,如你可以通過arr[0],arr[x]獲取到任意下標的值。

而棧,(一般情況下),只能獲取棧頂的值,需要進行出入棧來獲取不一樣的棧頂。

可以用步槍代替狙擊槍嗎?

炮院無敵 狙擊槍的槍管和精度遠飛非步槍可比,步槍的散步太大,而且一般沒有腳架。而且狙擊槍的瞄準鏡裝在步槍上一般都不合適。退一步說,即使真的按你說的用步槍裝了狙擊鏡,你要搞清楚狙擊手是幹什麼的,沒有專業的狙擊槍很容易就涼涼了。但是凡事無絕對,厲害的狙擊大神機喵都能當狙使,比如志願軍狙擊手張桃芳。 元洲...

英文 我想 可以用什麼來代替?

餘嵐蕭 題主的問題很不清晰,我可以理解為 我想要 或者 我認為 那我就隨便舉幾個例子 我認為 I suppose I presume I wonder I figure 其實都可以用的 比如 我想出去走走 I want to go outside.I figure it is a nice idea...

貓砂是否可以用沙子代替?

之前一直用,可以,貓還小的時候還行,而且沙子是自然的東西有利於它習慣主動扒土埋屎,我家貓沒教就會了。用綠茶豆腐砂它小時候一直很抗拒那個味道。但是隨著它長大,它的排洩物的量也在增加,沙子是兜不住水分,貓養在家裡的話還是得考慮空氣問題,沙子鏟的時候味道非常感人,有貓砂的話相對來說好鏟,氣味小。 見仁見智...