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;