首页 > 其他 > 详细

[程序员代码面试指南]栈和队列-仅用递归函数和栈操作来逆序一个栈(递归)

时间:2019-05-15 23:30:00      阅读:144      评论:0      收藏:0      [点我收藏+]

问题描述

如题。
输入 栈12345
输出 栈54321

解题思路

用两个递归函数:

  • 第一个可以将栈底元素弹出
  • 第二个借助第一个可以实现栈逆序

代码

import java.util.Stack;

public class Main {
    public static void main(String args[]) {
        Stack<Integer> s=new Stack<>();
        s.push(1);
        s.push(2);
        s.push(3);
        for(int val:s) {
            System.out.println(val);
        }
        
        reverse(s);
        for(int val:s) {
            System.out.println(val);
        }
    }
    
    public static int popBottom(Stack<Integer> s) {
        int val=s.pop();
        if(s.empty()) {
            return val;
        }
        int bottomVal=popBottom(s);
        s.push(val);
        return bottomVal;
    }
    
    public static void reverse(Stack<Integer> s) {
        if(s.empty()) {
            return;
        }
        int val=popBottom(s);
        reverse(s);
        s.push(val);
    }
}

[程序员代码面试指南]栈和队列-仅用递归函数和栈操作来逆序一个栈(递归)

原文:https://www.cnblogs.com/coding-gaga/p/10872718.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!