栈的反转

来源:互联网 发布:怎么开淘宝网店挣钱 编辑:程序博客网 时间:2024/06/06 14:28

要求将栈中元素反转,只能使用本身的pop操作和递归函数

class StackReverse {    int getStackBottomElement(stack<int> &s){//返回栈底元素并移除栈底元素        int x = s.top();        s.pop();        if(s.empty())            return x;        else{            int y = getStackBottomElement(s);            s.push(x);            return y;        }    }    void reverseStack(stack<int> &s){        if(s.empty())            return;        else{            int x = getStackBottomElement(s);            reverseStack(s);            s.push(x);        }    }public:    vector<int> reverseStack(vector<int> A, int n) {//A中元素为栈中元素序列.A[0]为栈顶,A[n-1]为栈底.        stack<int>s;        for (int i=n-1; i>=0; --i) {            s.push(A[i]);        }        reverseStack(s);        vector<int>ans;        while (!s.empty()) {            ans.push_back(s.top());            s.pop();        }        return ans;    }};


0 0