1. 程式人生 > >只用遞迴函式和棧操作實現一個棧的逆序

只用遞迴函式和棧操作實現一個棧的逆序

//僅用遞迴函式和棧操作逆序一個棧
//需要實現兩個遞迴函式,一個用來返回並移除棧底元素,另一個遞迴函式就是逆序函式

#include <stack>
class Solution
{
public:
    int getAndRemoveLastElement(stack<int>& st)
    {
        int ret = st.top();
        st.pop();
        if (st.empty())
            return ret;
        else
        {
            int Last = getAndRemoveLastElement(st);
            st.push(ret);
            return Last;
        }
    }
    void reverse(stack<int>& st)
    {
        if (st.empty())
        {
            return;
        }
        int i = getAndRemoveLastElement(st);
        reverse(st);
        st.push(i);
    }
};

此篇部落格是學習牛客網左程雲老師的課堂得來