顺序栈的逆置java
时间: 2023-11-18 19:56:06 浏览: 88
顺序栈的逆置可以使用两种方法实现,一种是使用一个辅助的List集合,另一种是使用递归函数且不能申请额外空间。
方法一:使用一个辅助的List集合
核心代码如下:
```
private static void reverseStack(Stack<Integer> stack) {
List<Integer> list = new ArrayList<>();
while (!stack.isEmpty()) {
Integer i = stack.pop();
list.add(i);
}
for (int i = 0; i < list.size(); i++) {
Integer integer = list.get(i);
stack.push(integer);
}
}
```
方法二:使用递归函数且不能申请额外空间
核心代码如下:
```
private static void reverseStack(Stack<Integer> stack) {
if (stack.isEmpty()) {
return;
}
Integer i = getAndRemoveLastElement(stack);
reverseStack(stack);
stack.push(i);
}
private static Integer getAndRemoveLastElement(Stack<Integer> stack) {
Integer result = stack.pop();
if (stack.isEmpty()) {
return result;
} else {
Integer last = getAndRemoveLastElement(stack);
stack.push(result);
return last;
}
}
```
阅读全文