如题: 其实思想很简单, 递归而已。 知道递归了就不难了,
//coder: jianjun.yu
#include <stdio.h>
#include <stack>
using namespace std;
void ReverseStack(stack<int>& st)
{
if(st.size() > 1){
int nTop = st.top();
st.pop();
if(st.size() >= 1){
ReverseStack(st);
int nTail = st.top();
st.pop();
ReverseStack(st);
st.push(nTop);
ReverseStack(st);
st.push(nTail);
}
else{
st.push(nTop);
}
}
}
int main()
{
stack<int> st;
for(int i = 0; i < 5; i++)
st.push(i);
ReverseStack(st);
while(st.size() > 0)
{
int n = st.top();
printf("%4d",n);
st.pop();
}
printf("\n");
return 0;
}