我们如何将一个堆栈完全弹出到另一个堆栈中
How do we pop one stack completely into another stack
我有这个代码:
for (int i = 0; i < StackA.capacity(); i++) {
StackB.push(StackA.get(i));
}
但是它给我这个错误:
Array index out of range: 0
at java.base/java.util.Vector.get
谁能帮我找出我的错误?
如果您正在寻找的是如何在不从 atackA
中删除元素的情况下将元素添加到 stackB
,那么您可以使用 Iterator
来遍历 stackA
并将其元素添加到 stackB
.
//Adding elements within stackB without consuming stackA
for (Iterator<Integer> it = stackA.iterator(); it.hasNext(); ) {
stackB.push(it.next());
}
否则,正如评论中所建议的那样,如果使用 stackA
中的元素不是问题,您可以简单地迭代第一个堆栈直到它为空并将每个元素弹出到 stackB
在每次迭代期间。
//Adding elements within stackB by consuming stackA
while (!stackA.empty()) {
stackB.push(stackA.pop());
}
我有这个代码:
for (int i = 0; i < StackA.capacity(); i++) {
StackB.push(StackA.get(i));
}
但是它给我这个错误:
Array index out of range: 0
at java.base/java.util.Vector.get
谁能帮我找出我的错误?
如果您正在寻找的是如何在不从 atackA
中删除元素的情况下将元素添加到 stackB
,那么您可以使用 Iterator
来遍历 stackA
并将其元素添加到 stackB
.
//Adding elements within stackB without consuming stackA
for (Iterator<Integer> it = stackA.iterator(); it.hasNext(); ) {
stackB.push(it.next());
}
否则,正如评论中所建议的那样,如果使用 stackA
中的元素不是问题,您可以简单地迭代第一个堆栈直到它为空并将每个元素弹出到 stackB
在每次迭代期间。
//Adding elements within stackB by consuming stackA
while (!stackA.empty()) {
stackB.push(stackA.pop());
}