zoukankan      html  css  js  c++  java
  • 算法--栈的翻转练习题

    转载http://www.cnblogs.com/haozhengfei/p/60409057a7c7c646e991ca8f45f5e443.html 


    栈的翻转练习题

     
    栈的翻转练习
     

    第5节 栈的反转练习题

     

    实现一个栈的逆序,但是只能用递归函数和这个栈本身的pop操作来实现,而不能自己申请另外的数据结构。

    给定一个整数数组A即为给定的栈,同时给定它的大小n,请返回逆序后的栈。

    测试样例:
    [4,3,2,1],4
    返回:[1,2,3,4]
     
     
    1
    import java.util.*;
    2
    
    
    3
    public class StackReverse {
    4
        public int[] reverseStack(int[] A, int n) {
    5
            Stack<Integer> stack = new Stack<>();
    6
            for (int tmp : A) {
    7
                stack.push(tmp);//stack[4,3,2,1]
    8
            }
    9
    
    
    10
            Stack<Integer> reverseStack = reverseStack(stack);//reverseStack[1,2,3,4]
    11
            for (int i = reverseStack.size()-1; i >-1 ; i--) {
    12
                A[i] = reverseStack.pop();
    13
            }
    14
            return A;
    15
        }
    16
    
    
    17
        // 翻转栈中的元素
    18
        private Stack<Integer> reverseStack(Stack<Integer> stack) {
    19
            // 移除栈底元素并返回
    20
            int i = getLast(stack);
    21
            if (stack.isEmpty()) {
    22
                stack.push(i);
    23
                return stack;
    24
            } 
    25
            else {
    26
                reverseStack(stack);//继续下一层递归
    27
                stack.push(i);//将这一层的元素压入栈
    28
            }
    29
            return stack;
    30
    
    
    31
        }
    32
    
    
    33
        // 移除栈底元素并返回
    34
        public int getLast(Stack<Integer> stack) {
    35
            // 弹出当前的元素
    36
            int result = stack.pop();
    37
            if (stack.isEmpty()) {
    38
                return result;
    39
            } 
    40
            else {
    41
                int last = getLast(stack);
    42
                stack.push(result);
    43
                return last;
    44
            }
    45
        }
    46
    }
     
     
    您的代码已保存
    答案正确:恭喜!您提交的程序通过了所有的测试用例
     
     
  • 相关阅读:
    怎样用回显和无刷新实现模糊查询?
    2020软件工程作业02
    2020软件工程作业01
    2019春总结作业
    2019春第四次课程设计实验报告
    2019春第三次课程设计实验报告
    2019春第二次课程设计实验报告
    2019春第一次课程设计实验报告
    2019春第十二周作业
    2019春第十一周作业
  • 原文地址:https://www.cnblogs.com/haozhengfei/p/60409057a7c7c646e991ca8f45f5e443.html
Copyright © 2011-2022 走看看