Inteface Queue

0 respostas
J

Oi,

Gostaria que me ajudassem na implementação de um programa.

Por exemplo se eu tiver as 4 "torres" seguintes:
6
1      7  
2  4  8  
3  5  9  10

Eu quero fazer com que o programa retire um bloco do topo de cada torre e que ele repita a operação para as que ficam. Primeiro seriam retirados os blocos 1, 4, 6, 10, depois 2, 5, 7, depois o 3, 8 e finalmente o 9.
O resultado no ecran seria então 1 4 6 10 2 5 7 3 8 9.

Já tentei tanta coisa mas nada funciona correctamente.

Para a interface Queue, eu tenho:

public interface IntQueue 
{
   public void put(int i);
   public int get();
   public boolean isEmpty();
}
Para o array:
public class IntQueueArray implements IntQueue 
{
   private int[] queue;
   private int head, tail, size, maxN;
   
   public IntQueueArray(int capacity)
   {
      queue = new int[maxN];
      head = 0; 
      tail = 0;
      maxN = capacity;
   }
   public void put(int i){
      if (size < maxN) {
         queue[tail] = i; 
         tail = (tail+1) % maxN;
         ++size;
      }
   }
   
   public int get(){
      int i = queue[head];
      head = (head+1) % maxN;
      --size; 
      return i;
   }
   public boolean isEmpty() {
      return size == 0;
   }
}

Obrigado.

Criado 10 de maio de 2009
Respostas 0
Participantes 1