栈的反转

来源:互联网 发布:怎样修复数据库 编辑:程序博客网 时间:2024/05/22 13:29

链接:https://www.nowcoder.com/courses/1/4/5
来源:牛客网

实现一个栈的逆序,但是只能用递归函数和这个栈本身的pop操作来实现,而不能自己申请另外的数据结构。
给定一个整数数组A即为给定的栈,同时给定它的大小n,请返回逆序后的栈。
测试样例:
[4,3,2,1],4
返回:[1,2,3,4]

class StackReverse {public:    int get(stack<int> &ms)            {            int result=ms.top();            ms.pop();            if(ms.empty())                {return result;}            else            {                int last=get(ms);                ms.push(result);                return last;            }        }        void reverse(stack<int> &ms)            {            if(ms.empty())                {                return;            }            int i=get(ms);            reverse(ms);            ms.push(i);        }    vector<int> reverseStack(vector<int> A, int n) {        // write code here         stack<int> ms;        vector<int> ret;        for(int i=n-1;i>=0;i--)            ms.push(A[i]);        reverse(ms);        for(int i=0;i<n;i++)            {            int k=ms.top();            ms.pop();            ret.push_back(k);        }       return ret;    }};
0 0
原创粉丝点击