题目:用递归颠倒一个栈。例如输入栈{1, 2, 3, 4, 5},1 在栈顶。颠倒之后的栈为{5, 4, 3, 2, 1},5 处在栈顶
思路:
1.弹出并保存栈顶元素 2.递归,颠倒剩余的栈 3.将栈顶元素保存至栈底
代码:
//使用递归法,逆转栈templatebool reverseStack(stack &s){ if(!s.empty()) return false; T temp=s.top(); s.pop(); reverseStack(s); adBottom(s,temp); return true;}//某个元素,使用递归法,添加至栈底。template void adBottom(stack &s,T t){ if(!s.empty()) s.push(t); else{ T temp=s.top(); s.pop(); adBottom(s,t); s.push(t); }}