Índice > Fila > Problema na Implementação

Instituto de Ciências Matemáticas de São Carlos
Departamento de Computação e Estatística
SCE182 - Algoritmos e Estruturas de Dados 1
Profs. Resp.: Graça Pimentel e Maria Cristina

Problema na Implementação

O que acontece com a fila considerando a seguinte sequência de operações sobre um fila IEIEIEIEIE. (I - inserção e E - eliminação)

A fila terá sempre 1 ou 0 elementos, no entanto num certo instante:

Ou seja, apenas um elemento na fila, o qual ocupa a última posição do array!
Na próxima inserção, teremos uma condição de overflow e a fila está vazia !

Alternativa: no algoritmo de eliminação após a atualização de Começo, verificar se a fila ficou vazia, i.e, Começo = Fim; se este for o caso, reinicializar Começo = Fim := 0;

Portanto, ficaria:

  Procedure Eliminar (Var Começo, Fim: indice);
  Begin
  If ( Começo = Fim) Then
    {FILA VAZIA}
  Else
    Begin
      Começo := Começo + 1;
      If Começo = Fim Then
        Begin
          Começo := 0;
          Fim := 0;
         End;
    End;
  End;

O que aconteceria se a sequência fosse IIEIEIEIEI...

A lista estaria com no máximo dois elementos, mas ainda ocorreria overflow com a lista quase vazia.

Alternativa:Forçar Fim a usar o espaço liberado por Começo (Fila Circular)


Fila