1.設計乙個棧,在其基礎功能的基礎上,設計乙個getmin方法,每次呼叫時返回當前棧內的最小值。
要求:時間複雜度為o(1),可使用現成的棧結構。
思路:設計該棧有兩個棧,乙個儲存正常資料stackdata,乙個儲存正常資料中的較小值stackmin。在新資料壓入棧時,比較其與stackmin中棧頂元素,如果新資料小於等於stackmin棧頂,則將其插入stackmin,否則捨棄。同樣,在stackdata出棧時,檢查出棧元素和stackmin的棧頂元素是否相等,相等則stackmin也同樣出棧,這樣就保證了stackmin的頂部始終儲存的是stackdata中的最小元素。
如圖壓入3,4,5,1,2,1
**如下
#include#include#includeusing namespace std;template class mystack
; templatevoid mystack::push(t newnum)
else
stackmin.push(newnum);
return;
} templatebool mystack::pop()
else
stackdata.pop();
return true;
} templatet mystack::getmin()
int main()
void add(t input);
t poll();
t peek();
}; templatevoid myqueue::add(t input)
} stackpush.push(input);
flag = 1;
return;
} templatet myqueue::poll()
} t res = stackpop.top();
stackpop.pop();
flag = -1;
return res;
} templatet myqueue::peek()
} t res = stackpop.top();
flag = -1;
return res;
}int main()
} templatevoid reverse(stack*st)
}int main()
cout<
return 0;
}
棧相關問題
1 兩個佇列實現棧 2 兩個棧實現佇列 3 棧的有效性 用乙個棧結構來模擬。實質上是用棧儲存了進棧的順序。每遍歷到乙個數字位置,便進棧,top指標只增不減。當當前遍歷元素值大於top指標時,就將top指標以下所有節點入棧。當棧為空,或者棧頂元素不等於pop到的元素時,return false 4 求...
關於fragment回退棧的相關問題
一 fragment回退棧 activity切換時,相信大家都知道是通過棧的形式,不斷壓棧出棧,在fragment的時候,如果你不是手動開啟回退棧,它是直接銷毀再重建,但如果將fragment任務新增到回退棧,情況就會不一樣了,它就有了類似activity的棧管理方式。二 準備工作 2 activi...
虛擬機器棧相關的問題
q 舉例棧溢位的情況?stackoverflowerror a 遞迴呼叫等,通過 xss設定棧的大小 q 調整棧的大小,就能保證不出現溢位麼?q 分配的棧記憶體越大越好麼?q 垃圾 是否會涉及到虛擬機器棧?a 不會 記憶體區塊 error gc 程式計數器無無 本地方法棧有無 虛擬機器棧有無 堆區有...