我试着写一个Java方法大跳“多弹出”关闭堆栈。
它应该在执行“弹出”操作stack
对象k
的次数。 这是我在想什么,但它并不完全正确。 任何帮助了吗?
public void multipop(int k) {
while (top != null) {
for (int i = 0; i <= k; i++) {
this.pop();
}
}
}
我试着写一个Java方法大跳“多弹出”关闭堆栈。
它应该在执行“弹出”操作stack
对象k
的次数。 这是我在想什么,但它并不完全正确。 任何帮助了吗?
public void multipop(int k) {
while (top != null) {
for (int i = 0; i <= k; i++) {
this.pop();
}
}
}
看起来像一个差一错误。
如果k=1
,你会去通过循环与i=0
和i=1
。 可以通过改变解决这个i<=k
到i<k
while
直到堆栈用尽,这可能不是你想要的循环。 如果要检查是否有堆栈中的元素,使用if
语句。 this.pop()
四次。 while
与if
,你只检查是否有一个元素是在栈中,但你可以调用pop()
多次。 你应该做循环内的支票或移动内部的检查pop()
。 没有与此的几个问题:
for (... ; i<=k && stack.canPop(); ...
这应该遇到意外事件或无限循环,因为第一循环确保仍有一个“顶”变量不为空,然后将其引导到第二循环,从0:K。
您可以通过一个已经开。 你要
for(int i =0; i < k; i++)
如果有更多的问题,您需要提供更多的代码和问题。
第一,它循环(K + 1)倍,从0到k。 2,经过多次持久性有机污染物,有可能是顶部为空。 因此,它需要检查顶部所有的时间。
它可作如下修改:
公共无效MULTIPOP(INT K){
for (int i = 0; top != null && i < k; i++) {
this.pop();
}
}