從新開始學習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);
}
}