import java.util.Stack;

public class ReverseStackRecursive {

/**

* Q 66.颠倒栈。

* 题目:用递归颠倒一个栈。例如输入栈{1,2,3,4,5},1在栈顶。

* 颠倒之后的栈为{5,4,3,2,1},5处在栈顶。

*1. Pop the top element

*2. Reverse the remaining stack

*3. Add the top element to the bottom of the remaining stack

*/

public static void main(String[] args) {

ReverseStackRecursive r=new ReverseStackRecursive();

Stack stack=new Stack();

for(int i=0;i<10;i++){

stack.add(i);

}

r.printStack(stack);

r.reverseStack(stack);

r.printStack(stack);

}

public void reverseStack(Stack stack){

if(!stack.empty()){

Integer top=stack.pop();

reverseStack(stack);

addToBottom(stack,top);

}

}

public void addToBottom(Stack stack,Integer ele){

if(stack.empty()){

stack.push(ele);

}else{

Integer top=stack.pop();

addToBottom(stack,ele);//important

stack.push(top);

}

}

public void printStack(Stack stack){

/*

while(!stack.empty()){

System.out.print(stack.pop()+",");

}

*/

//we don't remove the elements in the stack.

for(Integer x:stack){

System.out.print(x+",");

}

System.out.println();

}

}

0

0

分享到:

2012-03-08 20:41

浏览 4504

评论

4 楼

bylijinnan

2012-10-13

neyshule 写道

这样做貌似还不如直接把栈倒到一个queue或是list里面再往回填。。空间复杂度都是n啊,这个算法每次都要开辟一个integer,而且递归还更废不是吗?

从效率上来说的确是那样的

但这道题目是考察递归吧 题目明确规定是 用递归颠倒一个栈

3 楼

neyshule

2012-10-13

neyshule 写道

Integer top=stack.pop();

addToBottom(stack,ele);//important

stack.push(top);

代码都不对吧,你想一下别扭吗?

不好意思是对的,看错了。。

2 楼

neyshule

2012-10-13

Integer top=stack.pop();

addToBottom(stack,ele);//important

stack.push(top);

代码都不对吧,你想一下别扭吗?

1 楼

neyshule

2012-10-13

这样做貌似还不如直接把栈倒到一个queue或是list里面再往回填。。空间复杂度都是n啊,这个算法每次都要开辟一个integer,而且递归还更废不是吗?

java递归栈_java-66-用递归颠倒一个栈。例如输入栈{1,2,3,4,5},1在栈顶。颠倒之后的栈为{5,4,3,2,1},5处在栈顶...相关推荐

  1. java累加和_java累加求和递归

    理论上我们可以在允许一个Java文件里面同时存在多个类,但是必须有且只有一个public类,且该类的类名与Java文件的文件名保持一致.在一个类文件中只能存在一个main函数,确保程序入口唯一.下面举 ...

  2. java list 拆分_Java面试题怎么确保一个集合不能被修改?

    点击上方"千锋Java学院",选择"置顶公众号" 每天一道面试模拟真题及解析 课前导读 ●回复"每日一练"获取以前的题目,持续更新! ●我希 ...

  3. java http连接_Java中通过方法创建一个http连接并请求(服务器间进行通信)

    服务器间进行通信只能通过流(Stream)的方式进行,不能用方法的返回值. 1.Java代码创建一个连接并请求该连接返回的数据 doGet()方法,execute()方法中调用 package dem ...

  4. java 正方形字符串_java编程:怎么画一个正方形?

    问题描述: java编程:怎么画一个正方形? 不用applet,只是application编程,用java怎么画一个蓝色的正方形(最好实心和空心的各画一个). -------------------- ...

  5. java super实例_Java 的 super 学习的一个实例

    CSDN上的确菜鸟很多,很多都是坚持几天就不玩的人,还是坚持一下吧,把它当成学习备忘录也不错 package duapp.com.leon; /** * Created by leon on 5/28 ...

  6. java画笑脸_java的画图运用。一个简答的笑脸程序☺

    一个简答的笑脸. 需要两个java文件 代码如下: GradeBook.java import java.awt.Color; import java.awt.Graphics; import jav ...

  7. java 整数的立方和_java编程题目:编写一个程序,输入一个三位正整数,输出个、十、百位数字的立方和。新手,请详细一点...

    www.mh456.com防采集. 先了解思路就bai很容易了du,把十位和百位分别转成个zhi位然后在dao对十取余就能拿到内该数了! public class Main { public stat ...

  8. java access 密码_java 连接加密Access2007数据库时,不用输入用户名密码也能连上

    java 连接加密Access2007数据库时,不用输入用户名密码也能连上 我用Access2007做了一个加密的数据库,用的是Access本身的功能加密的.双击打开Database2.mdb文件时, ...

  9. java 创建水果_java程序题:定义一个抽象类-水果,其中包括getWeight()方法,编写程序分别创建苹果、...

    java程序题:定义一个抽象类-水果,其中包括getWeight()方法,编写程序分别创建苹果. 关注:286  答案:3  信息版本:手机版 电脑版 解决时间 2021-01-17 06:08 提问 ...

  10. java 渐变橡皮擦_java 的画板上面的一个橡皮檫功能

    importjava.awt.*;importjavax.swing.*;importjava.awt.event.*;classToolBarextendsJPanel{//工具条Image[]im ...

最新文章

  1. Web跨浏览器进程通信
  2. 【智能泊车】基于MATLAB的智能泊车算法的仿真
  3. docker数据卷volume详解
  4. 使用countup.js使数字动态叠加
  5. Python-学生信息管理系统.exe(代码)
  6. 前端学习(1757):前端调试值之网络条件与user-Agent的设置
  7. ObjectArx创建自定义实体
  8. 小小一行Python命令,居然把电脑变成服务器
  9. ReplaceAll()和Replace的实战用法
  10. Blender 2.82 发布,三维动画制作软件
  11. HTTP 协议深入理解(一)
  12. java自定义表单系统_java自定义表单
  13. idea启动azkaban2.5
  14. 轻体重者入门跑鞋选购全攻略(包括跑姿分析及跑鞋推荐)
  15. Learn-设计模式系列-①七大原则
  16. CAP迷思:关于分区容忍性
  17. 【通俗易懂】什么是机器学习
  18. 初学Python之fractions模块下Fraction使用方法
  19. 页面生命周期:DOMContentLoaded, load, beforeunload, unload解析
  20. 九大数据分析方法:结构分析法

热门文章

  1. 单行文字、多行文字溢出时省略号表示的多种解决方式;调整字符间距;段落首字母大写缩进效果;
  2. 学计算机激励标语口号,激励学习的口号
  3. JAVA中基本类型Boolean占几个字节
  4. cheungssh mysql密码_CheungSSH安装及基本使用
  5. Vue数据绑定v-bind
  6. 数据转换之 Number
  7. 数组concat_js 标准二维数组变一维数组的方法
  8. python实现简单的名字管理系统_python列表使用实现名字管理系统
  9. bs4 乱码_Python BeautifulSoup中文乱码问题的2种解决方法
  10. ios 图片逆时针旋转_iphone-IOS 竖直拍照被旋转,image-orientation 让图片自动旋转