0%

仅用递归函数和栈操作逆序一个栈

题目

实现栈中元素的逆序, 但是只能用递归函数来实现, 不能使用其它数据结构.

思路

递归获取栈底元素

代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/**
* 将栈倒置
*/
public static void reverse(Stack<Integer> stack) {
if (stack.isEmpty()) {
return;
}
int item = getAndRemoveLastElement(stack);
reverse(stack);
stack.push(item);
}


/**
* 将stack的栈底元素返回并移除
* */
public static int getAndRemoveLastElement(Stack<Integer> stack){
int result = stack.pop();
if (stack.isEmpty()) {
return result;
}
int last = getAndRemoveLastElement(stack);
stack.push(result);
return last;
}