
Procedure Inserir (Var Fim: indice);
Begin
If Fim = m-1 Then
Fim := 0
Else
Fim := Fim + 1; {ou Fim := ( Fim + 1 ) mod m}
End;
Procedure Eliminar (Var Começo: indice); Begin Começo := (Começo + 1) mod m; End;
Começo = FimPara resolver esse problema, utilizaremos apenas m-1 posições do anel. Deste modo, existe sempre um elemento vazio e, portanto, Fim não coincide com Começo.
O algoritmo para inserção em anel fica:
Procedure Inserir (Var Fim: indice; Começo: indice; F: fila);
Begin
If (Fim + 1) mod m = Começo Then
{FILA CHEIA}
Else
Begin
Fim := (Fim + 1) mod m; {um registro fica vazio}
F[Fim] := x;
End;
End;
O algoritmo para eliminação em anel fica:
Procedure Eliminar (Var Comeco: indice; Fim: indice);
Begin
If Começo = Fim Then
{FILA VAZIA}
Else
Começo := (Começo + 1) mod m;
End;