美文网首页
如何仅用递归函数和栈操作逆序一个栈

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

作者: Tank_Mao | 来源:发表于2020-10-01 17:22 被阅读0次

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

    【要求】
    要求即题目。

    【解答】
    见源码!

    package pers.mao.stackAndQueue.demo_03;
    
    import java.util.Stack;
    
    /**
     * @author Mao Qingbo
     * @date 2020-09-29
     */
    public class reverseStack {
        /**
         * 递归函数一
         * @param stack 一个普通栈
         * @return 返回并删除栈底元素
         */
        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;
            }
        }
    
        /**
         * 递归函数二
         * 将stack逆序
         * @param stack
         */
        public static void reverse(Stack<Integer> stack){
            if(stack.isEmpty()){
                return;
            }
            int i = getAndRemoveLastElement(stack);
            reverse(stack);
            stack.push(i);
        }
    }
    

    相关文章

      网友评论

          本文标题:如何仅用递归函数和栈操作逆序一个栈

          本文链接:https://www.haomeiwen.com/subject/jwamuktx.html