有關棧的題目

2021-06-22 08:47:12 字數 1142 閱讀 7871

設計包含min函式的棧。

定義棧的資料結構,要求新增乙個min函式,能夠得到棧的最小元素。

要求函式min、push以及pop的時間複雜度都是o(1)。

結合鍊錶一起做。容器vector代替鍊錶

eg:  10,3,3,8,2,6

1.push()   :如果push入棧a的元素小於棧b的棧頂所對應的的元素,則將該元素push入棧b中; 或者第乙個元素也直接push入b中

棧a     輔助棧b( 存放最小值 )

6            2min=2

2            2min=2

8            3min=3          

3            3                       min=3           

3            3                       min=3          

10         10                      min=10          

2.pop()  :棧a刪去乙個,棧b也刪去乙個

棧a     輔助棧b

6          

min=2

2            

min=2

8            2

min=3          

3            3                       min=3          //注意最小值相等的情況

3            3                       min=3          

10         10                      min=10          

3.min()  :直接返回棧b中的最後乙個元素

**:

#include #include #include using namespace std;

templateclass cstack //主要包含了min()功能,且時間複雜度為o(1)

void pop()

t min() };

int main()

幾個有關棧的題目

棧 stack 是限定僅在表尾進行插入或刪除操作的線性表。棧又稱為後進先出 last in first out 的線性表 簡稱lifo結構 對於棧來說,表尾端有其特殊含義,稱為棧頂 top 相應的,表頭端稱為棧底 bottom 棧的順序儲存空間為s 1 50 s 1 m 答 這裡的 1 50 和 1...

有關棧的小知識

include int main 引用於 c專家程式設計 在我的ubuntu14.04 64位作業系統中輸出 the stack top is near 0x7ffc5643981c 符合64位虛擬記憶體管理 2.linux棧的大小 首先用ulimit s可以檢視棧大小 輸出 8192。單位是k。也...

有關棧的面試題

輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序 假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。class solution ret...