2012-10-15 2 views
0

숫자 변수없이 순환 배열 대기열을 구현하려고합니다.순환 배열 대기열

배열이 꽉 찼는지를 결정할 방법을 찾고 있는데, 확장 메소드를 호출하지만 어떤 이유에서 작동하지 않는 것 같습니까? 감사!

public void enqueue (T element) { 
     if(front != (rear+1) % queue.length) { 
      queue[rear] = element; 
      rear = (rear+1) % queue.length; 
     } 
     else 
      expandCapacity(); 
    } 

public void expandCapacity() { 
     T[] larger = ((T[]) (new Object[queue.length * 2])); 

     for (int scan=0; scan < queue.length; scan++) { 
      larger[scan] = queue[front]; 
      front = (front+1) % queue.length; 
     } 
     front = 0; 
     rear = queue.length; 
     queue = larger; 
    } 
+0

이 숙제가 있습니까? –

+0

프로젝트의 작은 부분이 예에서 작동하지만 대기열을 구현하는 데 문제가 있습니다. – JProg

+1

그래서 whar는 앞면과 뒷면의 초기 값이고 queue.length는 어떻게 작동합니까? – korifey

답변

0

가장 먼저 잘못된 점은 확장해야하는 경우 대기열에 아무 것도 추가하지 않는다는 것입니다. 당신이해야 이상 크게 expandCapacity에서, 또한

public void enqueue(T element) { 
    if (front == (rear + 1) % queue.length) { 
     expandCapacity(); 
    } 
    queue[rear] = element; 
    rear = (rear + 1) % queue.length; 
} 

, 당신은 rear을 설정하고, 다음 enqueue 방법은 같이 할 필요가 확인하십시오 :

rear = queue.length - 1; 
+0

지금보십시오. 정말 고맙습니다. – JProg

관련 문제