演算法日記-逆序輸出一個棧
阿新 • • 發佈:2020-09-19
演算法日記-逆序輸出一個棧
要求:不能使用除棧以外的其他資料結構
需要使用遞迴函式,一次返回一個棧中的最底部的元素,還需要一個遞迴函式呼叫這個方法,並將返回的最底部的函式放入到新的棧中。
遞迴返回棧中最底部的數
/** * 返回並移除棧中最底部的元素 * 先將棧中的最頂層的取出,然後遞迴呼叫該函式, * 在執行到棧中最後一個數據時將其return出去, * 如果不是最後一個數,就把它放入新的棧中,最後 * 返回的是該棧中移除最後一個數據之外的棧。 * @param stack * @return */ public static int removeLast(Stack<Integer> stack){ int result = stack.pop(); if(stack.empty()){ return result; }else { int last = removeLast(stack); stack.push(result); return last; } }
將上述返回的數字依次放入新的棧中
/**
* 遞迴呼叫上述的方法,將數字放入棧中
* @param stack
*/
public static void reverse(Stack<Integer> stack){
if(stack.isEmpty()){
return;
}
int i = getAndRemoveLastElement(stack);
reverse(stack);
stack.push(i);
}