careercup 棧與佇列 3 2

2021-09-06 20:02:43 字數 665 閱讀 6251

3.2 請設計乙個棧,除pop與push方法,還支援min方法,可返回棧元素中的最小值。push、pop和min三個方法的時間複雜度必須為o(1)。

我們假設除了用乙個棧s1來儲存資料,還用另乙個棧s2來儲存這些非冗餘最小值。那麼, 當我們將資料壓到要s1時,同時將它和s2的棧頂元素比較,如果不大於s2的棧頂元素, 那麼將當前值也壓入s2中。這樣一來,s2中儲存的就是乙個階段性最小值。 即s2中的每個值都是s1中棧底到達某個位置的最小值。那麼,如果執行pop操作呢? 執行pop操作除了將s1中的棧頂元素出棧,還要將它和s2中的棧頂元素比較,如果相等, 說明這個值是棧底到棧頂的最小值,而它出棧後,最小值就不再是它了。所以, s2也要將棧頂元素出棧,新的棧頂元素將對應s1剩下元素中新的最小值。

c++實現**:

#include#include

using

namespace

std;

class

minstack

if(stack1.top()stack2.push(x);

else

}void

pop()

else

stack2.pop();

}inttop()

intgetmin()

};int

main()

棧與佇列 建立棧 佇列

陣列棧 完成stack createstack int maxelements 函式,該函式建立乙個棧,maxelements為與分配的棧空間大小 棧可用空間為array 0,maxelements 1 typedef int elemtype struct stackrecord typedef ...

棧 佇列與優先佇列

123 45 include stack int s 入棧 push 出棧 pop 取棧頂top 123 45 include queue int s 入隊 push 出隊 pop 取隊首元素 front 不刪除 123 4priority queue int pq 入隊 push 出隊 pop 取...

棧 佇列與優先佇列

123 45 include stack int s 入棧 push 出棧 pop 取棧頂top 123 45 include queue int s 入隊 push 出隊 pop 取隊首元素 front 不刪除 123 4priority queue int pq 入隊 push 出隊 pop 取...