gpt4 book ai didi

java - 删除堆栈中的特定元素

转载 作者:行者123 更新时间:2023-11-30 07:13:14 24 4
gpt4 key购买 nike

我正在尝试删除堆栈中的特定元素,但遇到了一些麻烦。我的想法是将元素弹出到临时堆栈,弹出我正在寻找的索引,然后将临时堆栈中的元素弹出回主堆栈。我无法想出如何让临时堆栈回到顶部。任何帮助将不胜感激。

public E remove(int index) {
Stack<E> tmpStack = new Stack<E>();
if (size() == 0) {
return null;
} else {
for (int i = 0; i < index; i++) {
tmpStack.push(this.pop());
}
return tmpStack.pop();
}
while (!tmpStack.isEmpty())
this.push(tmpStack.pop());
}

想法?干杯!

最佳答案

问题是你在最后一个恢复操作之前有一个返回,所以方法返回被删除的元素而不调用它之后的代码。

你通常会有一个 unreachable code错误,但在您的情况下,这是不正确的,因为您没有将最后一个 while 包含在 else 分支中,因此如果堆栈为空,则 while 是执行(即使在空堆栈上)并且 java 编译器无法检测到这一点。

你应该做类似的事情:

if (isEmpty())
return null;
else
{
for (int i = 0; i < index; i++)
tmpStack.push(this.pop());

E removedElement = tmpStack.pop();

while (!tmpStack.isEmpty())
this.push(tmpStack.pop());

return removedElement;
}

关于java - 删除堆栈中的特定元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19647713/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com