新手练手感--part1.1 栈与队列之用栈和递归函数实现逆序栈

题目:

  一个stack放入元素之后,利用递归函数将stack逆序

思路:

(1)stack:放入元素

(2)递归函数1(获取栈底元素并移除):1.弹出stack中元素result  2.获取栈底元素 3.将result放入栈,这样实现一个效果:每一次获取栈底元素,并返回,其他元素顺序不变

(2)递归函数2(翻转栈):1.调用递归函数1,得到栈底元素  2.根据递归条件,最后一个元素最先返回,则最先push入stack

 

写代码:

public class TestCode {
    //存放栈数据
    private Stack<Integer> stackPush = new Stack<Integer>();

    //递归函数1:获取栈底元素并移除
    private Integer getAndRemoveLatestNum() {
        int num = stackPush.pop();
        if(stackPush.isEmpty()) {
            return num;
        }

        int last = getAndRemoveLatestNum();
        stackPush.push(num);
        return last;
    }

    private void reverseStack() {
        if(stackPush.isEmpty()) {
            return;
        }

        int last = getAndRemoveLatestNum();
        reverseStack();
        stackPush.push(last);
    }


    public static void main(String[] args) {
        TestCode testCode = new TestCode();
        testCode.stackPush.push(1);
        testCode.stackPush.push(2);
        testCode.stackPush.push(3);
        testCode.stackPush.push(4);
        testCode.stackPush.push(5);
        testCode.reverseStack();

        for(int i = 0; i < testCode.stackPush.size(); i++) {
            System.out.print(testCode.stackPush.get(i) + "  ");
        }
        System.out.println("");
    }

}

 

posted @ 2017-06-07 00:02  jiguojing  阅读(322)  评论(0编辑  收藏  举报