微软100题(66)用递归颠倒栈
2015-06-03 12:10
423 查看
题目:用递归颠倒一个栈。例如输入栈{1, 2, 3, 4, 5},1在栈顶。
颠倒之后的栈为{5, 4, 3, 2, 1},5处在栈顶。
思路:栈为空就终止,否则出栈,递归处理,然后进栈,这里需要用两个递归,一个用于出来,一个用于进栈底
颠倒之后的栈为{5, 4, 3, 2, 1},5处在栈顶。
思路:栈为空就终止,否则出栈,递归处理,然后进栈,这里需要用两个递归,一个用于出来,一个用于进栈底
void AddToBottom(stack<int> &data,int element) { if(data.empty()) data.push(element); else { int top = data.top(); data.pop(); AddToBottom(data,element); data.push(top); } } void ReverseStackRecursion(stack<int> &data) { if(data.size()==1) return; int element = data.top(); data.pop(); ReverseStackRecursion(data); AddToBottom(data,element); }
相关文章推荐
- Java for LeetCode 136 Single Number
- 在网页中插入视频代码大全
- Page rank
- 网络编程之shutdown() 与 close()函数详解
- 下了个蓝屏代码查看工具,就中病毒了。。。什么鬼病毒,竟然还是用的VBS
- Spring整合Hibernate的时候使用hibernate.cfg.xml
- UIKit--UIAlertController
- Android Service详解
- mac中遇到的mysql编码问题
- iWatch 页面导航
- Unity Rigidbody
- jQuery中extend()和fn.extend()方法详解
- JavaScript - implement page lazy loading via mouse scrolling
- Program Pack
- 在Linux下搭建Tiny开发环境
- glBlendFunc函数
- Python自动调用IE打开某个网站的方法
- 高性能、高并发TCP服务器(多线程调用libevent)
- TinyUI组件开发示例
- JavaScript中switch语句的用法详解