栈的逆转(Reversal)

Stack的逆转,一般的话,会是用另外一个栈,或者是队列完成逆转。
但在要求只能用递归实现的时候,就需要了这些东西。

代码如下

欢迎讨论-Sean

#include <iostream>
#include <stack>
using namespace std;void help_reversal(stack<int> &s, int top_num,int level) {if (s.size() == level) {s.push(top_num);return;}int num = s.top();s.pop();help_reversal(s,top_num,level);s.push(num);
}void reversal(stack<int> &s, int n) {for (int i = 0; i < n - 1; ++i) {int num = s.top();s.pop();help_reversal(s , num, i);  }
}int main(){int n,t ;cin >> n;stack<int> s;for (int i = 0; i < n; ++i) {cin >> t;s.push(t);}reversal(s,n);for (int i = 0; i < n; ++i) {cout << s.top()<<" ";s.pop();}
}

栈的逆转(递归实现)相关推荐

  1. 常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构)

    常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构) 数据结构和算法作为程序员的基本功,一定得稳扎稳打的学习,我们常见的框架底层就是各类数据 ...

  2. 基于计数栈的非递归二叉树遍历算法

    转载请保留完整信息! 作者:中山大学 赵耀 10389332 创作时间:2013.11.25 发表时间:2013.12.11 背景 遍历算法一般可按深度优先或广度优先进行.对于二叉树,深度优先遍历可分 ...

  3. 数据结构:利用栈,将递归转换为非递归的方法

    利用栈将递归转换为非递归 对于一般的递归过程,仿照递归算法执行过程中递归工作栈的状态变化,可直接写出相应的非递归算法. 步骤 第一次调用的参数push进堆栈,原有递归代码外层加一个while循环,判断 ...

  4. 数据结构--汉诺塔--借助栈实现非递归---Java

    1 /*汉诺塔非递归实现--利用栈 2 * 1.创建一个栈,栈中每个元素包含的信息:盘子编号,3个塔座的变量 3 * 2.先进栈,在利用循环判断是否栈空, 4 * 3.非空情况下,出栈,检查是否只有一 ...

  5. 递归转手动管理栈的非递归

    # 递归转非递归 #自己管理栈,关键在于模拟函数调用的过程# 栈结构 class Lstack():def __init__(self,top=-1,full=20):self._top = tops ...

  6. 【数据结构的魅力】002.单向、双向链表栈和队列递归

    单向.双向链表 单链表和双链表最简单的练习 1)单链表和双链表如何反转 2)删除给定值的全部节点 遍历链表,找到第一个不是给定值的元素,即为头结点 while与if结合使用,通过两个变量(类似指针)来 ...

  7. 栈,实现递归的数据结构

    栈在计算机中扮演着重要的角色,它是计算机实现函数调用的基本数据结构. 文章目录 1.什么是栈 2.入栈 3.出栈 4.栈的实现 5.总结 1.什么是栈 栈是一种较为特殊的数据结构,它的特点是先进后出. ...

  8. 树形结构:递归转化为迭代,万能通用方法,分治策略基于栈的实现

    前面提到树的3中遍历迭代实现的时候,讲到:还有一种思路,直接针对递归的实现方式,想办法通过栈来实现递归,得到的还是和上面一样 一般的递归改成迭代的方法,你需要知道迭代指针是如何走的,还要借助数据结构才 ...

  9. 递归5--汉诺塔问题的栈实现

    递归5--汉诺塔问题的栈实现 汉诺塔的递归解法:http://www.cnblogs.com/Renyi-Fan/p/6949515.html 一.心得 系统里面的递归就是靠栈来维护的, 区别我们普通 ...

最新文章

  1. SpringCloud微服务注册中心如何承载大型系统的千万级访问?源码及原理分析
  2. C语言:输入两个数,输出最大公约数,最小公倍数
  3. virtualenv在windows10下面使用的注意事项
  4. bzoj4668 冷战
  5. jsp文件上传_文件上传
  6. rsoft透射谱_基于Rsoft软件光纤光栅的仿真模拟
  7. UDK控制台命令概览
  8. 中国移动回应“5G消息APP”下架:并非面向客户商用发布的产品
  9. 超详细!使用 LVS 实现负载均衡原理及安装配置详解
  10. 第十四天linux扩展知识点
  11. Qt_qDebug 原理详解
  12. KITTI Benchmark原理_距离误差百分数
  13. OL6.5操作系统安装Mysql5.6
  14. 坚果云 我的电脑图标_坚果云使用教程
  15. SVN(subversion )服务端和客户端的下载安装使用
  16. 风拂树,月下杯影为伊留...
  17. 关于如何调用苹果自带的地图APP
  18. chrome设置浏览器网页编码
  19. 华为网络设备SSH方式登录配置
  20. 知网html阅读需要花钱么,自己花钱怎么在知网上查重

热门文章

  1. 防抖 节流_面试必备考点:防抖与节流
  2. 网络视频监控系统解决方案概述
  3. nginx详细配置文件 (转)
  4. 31 天重构学习笔记28. 为布尔方法命名
  5. Linux操作系统下软件的安装方法大全
  6. 内网更新服务器的搭建(WSUS)
  7. 计算机基础教育德育教学,【家庭教育论文】计算机基础教学的德育教育(共2650字)...
  8. 【数据平台】Centos下仅CPU安装TensorFlow
  9. c3p0 参数 模糊查询_mybatis之动态sql,模糊查询,结果集处理,mybatis分页及特殊字符处理...
  10. salesforce开发入门1