重造轮子 用递归函数和栈操作逆序一个栈
来源:互联网 发布:淘宝助理安卓手机版5.7 编辑:程序博客网 时间:2024/06/05 19:11
目标:仅使用递归与栈操作将栈逆序。
方法:有点利用回溯法的味道。在递归操作中做两次取栈顶元素的操作后,并将第一次取得的栈顶元素再入栈。这个操作可以将原栈中最顶部的元素压入栈底。当递归函数返回时,再将另一个取栈顶操作获得的元素压入栈。然后在对从栈顶到次栈底这一段元素调用上诉操作。
代码:
class Solution{public:void reverseStack(stack<int>& s){//逆序栈if(s.empty())return;int len = s.size();while(len>1){//当栈内可逆序长度为1时,则栈已经完成逆序过程reverse(s,len);len--;}while(!s.empty()){//打印逆序后的栈,这里栈也变空了 cout<<s.top()<<endl;s.pop();}}void reverse(stack<int>& s,int len){ if(len == 1) return;int n,m; n = s.top();//第一次取栈顶元素 s.pop();//栈顶出栈m = s.top();//第二次取栈顶元素s.pop();//栈顶出栈s.push(n);//将第一次取栈顶操作得到的数压入栈reverse(s,len-1);//递归,长度减1s.push(m);//将第二次取栈顶操作得到的数压入栈}};
0 0
- 重造轮子 用递归函数和栈操作逆序一个栈
- 仅用递归函数和栈操作逆序一个栈
- 仅用递归函数和栈操作逆序一个栈
- 用递归函数和栈操作逆序一个栈
- 仅用递归函数和栈操作逆序一个栈
- 用递归函数和栈操作逆序一个栈
- 如何使用递归函数和栈操作逆序一个栈
- 用递归函数和栈操作逆序栈(递归)
- 栈和队列之仅用递归函数和栈操作逆序一个栈
- 栈和队列(3)--如何仅用递归函数和栈操作逆序一个栈
- 1栈和队列--仅用递归函数和栈操作逆序一个栈
- 栈和队列之仅用递归函数和栈操作逆序一个栈
- 栈和队列——如何仅用递归函数和栈操作逆序一个栈
- 栈和队列 如何仅用递归函数和栈操作逆序一个栈
- 栈和队列---如何仅用递归函数和栈操作逆序一个栈
- 如何仅用递归函数和栈操作逆序一个栈
- 3.如何仅用递归函数和栈操作逆序一个栈
- 数据结构 如何仅用递归函数和栈操作逆序一个栈
- qcom_vuforia环境搭建
- AFNetworking网络框架的基本使用
- struts2之ModelDriven
- putty字体大小颜色改变
- java关键字之break与continue的区别(简单明了的小例子)
- 重造轮子 用递归函数和栈操作逆序一个栈
- Java中子类是否可以继承父类的static变量和方法而呈现多态特性
- 最小生成树
- 数据结构相关的一些定义
- POJ 2585 Window Pains(拓扑排序)
- Insertion Sort源码
- solr 从零学习开始
- [sicily]1817. 校歌手大奖赛
- Python下异步IO和协程简介