0

我有一个方法,我在其中使用了很多其他类,包括链接列表、队列和堆栈。在我的方法中,我有一个 for 循环,我想在其中弹出堆栈(方便地命名为 s)并将队列(方便地命名为 q)出列到 s1 和 q1 中。出于某种原因,出队搞砸了程序,循环只运行了它应该运行的一半。这里有一些代码可以清楚地说明这一点

    public E dequeue() {

    if (manyItems == 0) {
        return null;
    }
    SNode<E> temp = front;
    front = front.getNext();
    manyItems--;
    return (E) temp.getElement();   

}

我还想说,我在程序的早期使用整数队列测试了我的整个 Queue 类,它工作得很好,包括出队。我不确定出了什么问题。如果我还不够清楚,或者如果我需要提供更多代码(还有很多,我只是包括关键部分),请告诉我。谢谢!

4

1 回答 1

3

Your loop is finishing halfway through because you are both incrementing j and decrementing the size of the queue each time through the loop. These two counters cross when the queue is half emptied.

You probably want this:

while (q.getManyItems() > 0) {
    s1 = s.pop();
    q1 = q.dequeue();//***
}

If you need to keep a for loop with a counter (because of other stuff in the loop body that you haven't shown us), change the code to:

final int count = q.getManyItems();
for (int j = 0; j < count; j++) {
    s1 = s.pop();
    q1 = q.dequeue();//***
}
于 2013-10-23T01:08:27.090 回答