2013-10-23 2 views
0

나는 Linked List, 큐 및 스택을 포함하여 꽤 많은 다른 클래스를 사용하고있다. 내 방법에서는, 나는 내 스택 (편리하게 s라고 불렀다)과 대기열 (편리하게 q라고 불리는)을 s1과 q1에 넣고 싶은 for 루프를 가지고있다. 어떤 이유로 든 dequeue가 프로그램을 엉망으로 만들고 루프는 필요한만큼 반으로 만 실행됩니다. 여기에 내가 또한 내가 정수 큐 이전 프로그램 내 전체 큐 클래스를 테스트하고 완벽하게 작동한다는 말씀을 전합니다이 명확루프에 영향을 미치는 큐 제거 메소드 (Java)

public E dequeue() { 

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

} 

는, 디큐 포함 할 몇 가지 코드입니다. 나는 틀린 것이 확실하지 않다. 내가 충분히 명확한 것을 만들지 않았거나 더 많은 코드를 제공해야하는 경우 (중요한 부분을 더 많이 포함 할 것입니다.), 알려주십시오. 감사!

+0

만들기 [SSCCE] (http://sscce.org/) –

+0

)는 작은 크기를 반환합니다 . 따라서 루프는 예상보다 빨리 종료됩니다. – Rami

+0

문제는 루프와 함께 문제 코드를 없애기 위해 질문을 편집했습니다! –

답변

3

루프가 완료 될 때마다 루프가 완료되기 때문에 매번 j이 증가하고 큐의 크기가 감소하므로 루프가 끝나고 있습니다. 이 두 카운터는 큐가 반으로 비울 때 교차합니다.

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

당신이 (때문에 당신이 우리를 표시하지 않은 루프 본문의 다른 물건) 카운터와 for 루프를 유지해야하는 경우 코드를 변경 :

당신은 아마이 원하는 : 당신이, 내가 그 q.getManyItems (그래서 Q의 크기를 변경할 것 같아요) (q.dequeue를 말할 때

final int count = q.getManyItems(); 
for (int j = 0; j < count; j++) { 
    s1 = s.pop(); 
    q1 = q.dequeue();//*** 
} 
관련 문제