【題目】
一個棧依次壓入1怜奖、2浑测、3、4烦周、5尽爆,那么從棧頂?shù)綏5追謩e為5、4读慎、3漱贱、2、1夭委。將這個棧轉(zhuǎn)置后幅狮,從棧頂?shù)綏5诪?、2株灸、3崇摄、4、5慌烧,也就是實現(xiàn)棧中元素的逆序逐抑,但是只能用遞歸函數(shù)來實現(xiàn),不能用其他數(shù)據(jù)結(jié)構(gòu)屹蚊。
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);
}