1. 程式人生 > >用遞歸函數和棧操作逆序棧

用遞歸函數和棧操作逆序棧

alt nbsp 棧操作 深度優先 subject lan -- highlight style

用遞歸函數和棧操作逆序棧

題目描述

一個棧依次壓入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; }

用遞歸函數和棧操作逆序棧