新手练手感--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(""); } }