从新开始学习Java了,前面学的东西都比较简单了,所以空闲时间就比较多了。闲下来的时候准备看本算法书。这些算法都是从一个叫《程序员代码面试指南IT名企算法与数据结构题目最优解著》的书中总结来的。接下来就是实现如何仅用递归函数和栈操作逆序一个栈。
package com.an.stack;
import java.util.Stack;
public class TestDiGui {
public static void main(String[] args) {
Stack<Integer> stack = new Stack<Integer>();
stack.push(1);
stack.push(2);
stack.push(3);//向栈内压入1 2 3 三个数字
reverse(stack);//将栈内元素逆序
System.out.println(stack);//输出时就是从栈底到栈顶进行输出
}
//每次得到栈中最后一个元素
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);
}
}