用递归函数和栈操作逆序一个栈(每日一道算法题)

来源:互联网 发布:wmf用什么软件打开 编辑:程序博客网 时间:2024/05/16 09:04

本题考查栈的操作和递归的设计。
我们需要设计出两个函数:
①将Stack栈底元素移除并返回
②逆序一个栈

package stack;import java.util.Stack;public class RecurrenceStack {    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);    }    //测试public static void main(String[] args) {        Stack<Integer> stack = new Stack<Integer>();        stack.push(1);        stack.push(2);        stack.push(3);        stack.push(4);        reverse(stack);        System.out.print(stack.pop()+",");        System.out.print(stack.pop()+",");        System.out.print(stack.pop()+",");        System.out.print(stack.pop()+",");    }}

参考文献:《程序员代码面试指南》—-左程云

阅读全文
0 0
原创粉丝点击