1 Star 0 Fork 38

hua-demo / java面试迷你版

forked from papi林 / java面试迷你版 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
2.md 1.52 KB
AI 代码解读
一键复制 编辑 原始数据 按行查看 历史
papi林 提交于 2020-06-06 00:29 . 更新

如何使用一个递归函数和栈操作逆序一个栈

例如把1、2、3、4、5压入栈中,那么栈从头到底就是5、4、3、2、1, 现在通过逆序成1、2、3、4、5,只能通过递归函数实现。

package ch1;

import java.util.Stack;

/**
 * @Description: ReverseStack
 * @Question: 如何使用一个递归函数和栈操作逆序一个栈
 * 例如把1、2、3、4、5压入栈中,那么栈从头到底就是5、4、3、2、1,
 * 现在通过逆序成1、2、3、4、5,只能通过递归函数实现。
 * --我有点想当然了,跑出来的结果不太对,然后看了下答案。。
 * @Author: linjiayu
 * @Date: 2020/6/6 0:05
 */
public class ReverseStack {

  public static int getLast(Stack<Integer> stack) {
    //  将栈的第一个元素拿出来
    int result = stack.pop();
    if (stack.isEmpty()) {
      //  直到栈为空了
      return result;
    }
    //  剩下的反转
    int last = getLast(stack);
    //  再放回去
    stack.push(result);
    return last;
  }

  public static void reverse(Stack<Integer> stack) {
    if (stack.isEmpty()) {
      return;
    }
    int i = getLast(stack);
    reverse(stack);
    stack.push(i);
  }

  public static void main(String[] args) {
    Stack<Integer> stack = new Stack<>();
    stack.push(1);
    stack.push(2);
    stack.push(3);
    stack.push(4);
    stack.push(5);
    reverse(stack);
    while (!stack.isEmpty()) {
      System.out.print(stack.pop() + " ");
    }
  }

}
Java
1
https://gitee.com/hua-demo/javaLearn.git
git@gitee.com:hua-demo/javaLearn.git
hua-demo
javaLearn
java面试迷你版
master

搜索帮助