Índice > Fila > Implementação Dinâmica

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, Maria Cristina e Rosane

Implementação Dinâmica

Definição da Estrutura de Dados

Obs. Supõe um elemento 'vazio' no início da fila
  Type tpont    = ^reg_fila;
       fila     = tpont;
       reg_fila = record
                    info: T;
                    lig: tpont;
                  End;

  Var Começo, Fim: fila;

-> Faça as alterações necessárias na definição da pilha para que os procedimentos não necessitem passar dois ponteiros como parâmetros.

-> Refaça as rotinas abaixo utilizando as alaterações feitas no exercício acima

-> Em seguida, faça as rotinas de novo, supondo que NÃO existe um nó vazio no início da lista.

Operações com Filas

1. Criar (F) - criar uma fila F vazia
  Procedure CriaFila (Var Começo, Fim: fila);
    Begin
      Começo := nil;
      Fim := nil;
    End;
2. Inserir (x, F) - insere x no fim de F
  {só se lista não vazia}

  Procedure Inserir (x: T;  Var Fim: fila);
    Begin
      new(Fim^.lig);
      Fim := Fim^.lig;
      Fim^.info := x;
      Fim^.lig := nil;
    End;
-> Fazer o Inserir considerando condições de exceção.
3. Vazia (F) - testa se F está vazia
  Function Vazia (Começo, Fim: fila): boolean;
    Begin
      Vazia := ( Começo = nil) and (Fim = nil);
    End;
4. Primeiro (F) - acessa o elemento do início da fila
  Function Primeiro (Var Começo: fila): T;
    Begin
      Primeiro := Começo^.info;
    End;
5. Elimina (F) - elimina o elemento do início da fila
  Procedure Elimina (Var Começo, Fim: fila;);
    Var p: fila;

    Begin
      p := Começo; 
      Começo := Começo^.lig;  {válido se lista não vazia}
      If ( Começo = Fim) Then
        Begin
          Dispose (Começo);
          Começo = nil;
          Fim  = nil;
        End;
      dispose(p);
    End;


Exemplo de Programa

Fila