設計包含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...