欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

栈和队列——如何仅用递归函数和栈操作逆序一个栈

程序员文章站 2024-02-27 22:59:45
...

【题目】
  一个栈依次压入1、2、3、4、5,那么从栈顶到栈底分别为5、4、3、2、1。将这个栈转置后,从栈顶到栈底为1、2、3、4、5,也就是实现栈中元素的逆序,但是只能用递归函数来实现,不能用其他数据结构

【解答】
  本题考察栈的操作和递归函数的设计,我们需要设计出两个递归函数,代码如下

【代码实现】

import java.util.Stack;
class Demo{
    //递归一:将stack的栈底元素返回并移除
    public static int getAndRemoveLastElement(Stack<Integer> stack){
        int result = stack.pop();
        if(stack.isEmpty()){
            return result;
        }else{
            int last = getAndRemoveLastElement(stack);
            stack.push(result);
            return last;
        }
    }
    //递归二:逆序一个栈
    public static void reverse(Stack<Integer> stack){
        if(stack.isEmpty()){
            return;
        }
        int i = getAndRemoveLastElement(stack);
        reverse(stack);
        stack.push(i);
    }
}