您的位置:首页 > 其它

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

2017-11-15 09:39 337 查看
本题考查栈的操作和递归的设计。

我们需要设计出两个函数:

①将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()+",");
}

}


参考文献:《程序员代码面试指南》—-左程云
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: