用遞歸函數和棧操作逆序棧
阿新 • • 發佈:2017-10-24
alt nbsp 棧操作 深度優先 subject lan -- highlight style
來源:牛客網
註意不能使用額外的數據結構! 其實類似深度優先搜索。 C++代碼如下:
用遞歸函數和棧操作逆序棧
題目描述
一個棧依次壓入1,2,3,4,5那麽從棧頂到棧底分別為5,4,3,2,1。將這個棧轉置後,從棧頂到棧底為1,2,3,4,5,也就是實現了棧中元素的逆序,請設計一個算法實現逆序棧的操作,但是只能用遞歸函數來實現,而不能用另外的數據結構。
給定一個棧Stack以及棧的大小top,請返回逆序後的棧。
測試樣例:[1,2,3,4,5],5
返回:[5,4,3,2,1]鏈接:https://www.nowcoder.com/questionTerminal/ba7d7f5d1edf4d1690d66e12e951f6ea
來源:牛客網
註意不能使用額外的數據結構! 其實類似深度優先搜索。 C++代碼如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
int level = 0;
vector< int > reverseStackRecursively(vector< int > stack, int top) {
if (top > 0){
int val = stack[top - 1];
++level;
stack = reverseStackRecursively(stack, top - 1);
--level;
stack[level] = val; }
return stack;
}
|
用遞歸函數和棧操作逆序棧