用递归函数和栈操作逆序栈

来源:互联网 发布:guava 并发编程 编辑:程序博客网 时间:2024/06/12 21:23
/**用递归函数和栈操作逆序栈    1.将最上面的数出栈保存,下面的栈逆序(递归)    2.原先最上面的数插到最底层*/include<bits/stdc++.h>using namespace std;class reverseStack{    public:        vector<int> reverseStackRecursively(vector<int> stack, int top){            if(top == 1){                return stack;            }            int tmp = stack.back();            stack.pop_back(); //最上面的数出栈            stack = reverseStackRecursively(stack, top-1); //下面的栈逆序            stack = insertToBottom(stack, tmp); //插入到栈的最底层            return stack;        }                vector<int> insertToBottom(vector<int> stack, int num){            if(stack.size() ==0){                stack.push_back(num);                return stack;            }            int top = stack.back();            stack.pop_back();            stack = insertToBottom(stack,num); //把数插入最底层            stack.push_back(top); //原先最上面的数入栈            return stack;        }};