只用遞迴函式和棧操作實現一個棧的逆序
阿新 • • 發佈:2019-01-28
//僅用遞迴函式和棧操作逆序一個棧
//需要實現兩個遞迴函式,一個用來返回並移除棧底元素,另一個遞迴函式就是逆序函式
#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);
}
};
//需要實現兩個遞迴函式,一個用來返回並移除棧底元素,另一個遞迴函式就是逆序函式
#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);
}
};
此篇部落格是學習牛客網左程雲老師的課堂得來