Índice > Lista > Estática Encadeada > Alocação de Nó

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

Alocação de Nó

Inicialização da Lista

Inicialmente todas as posições do vetor A estão disponíveis, portanto fazem parte de "Dispo".

  Procedure Init(var L: Lista);
    Begin
      L.Dispo:=1;         {primeiro elemento} 
      L.Prim:=0;          {lista principal está vazia}
      For i:=1 to n-1 do
        L.A[i].lig:=i+1;
      L.A[n].lig:=0;      {receber 0 corresponde ao nil}
    End;

Obter_No(L, j): obtém um registro de índice j da Dispo. Se estiver vazia, retorna zero em j. L é, portanto, modificada.

  Procedure Obter_No(var L: Lista; var j: endereco);
  Begin
    if L.Dispo <> 0 then   { Se Dispo estiver vazia, não pode obter registro }
    begin
       j:= L.Dispo;            { A dispo passa a apontar para quem ela apontava }
       L.Dispo:= L.A[L.Dispo].lig;
    end
    else j:= L.Dispo
  End;

Devolver_No(L, j): O registro de indice j, fornecido ao procedimento, passa a fazer parte da Dispo, como novo primeiro elemento. L é, portanto, modificada.

  Procedure Devolver_No(var L: Lista; j:endereco);
  Begin
    L.A[j].lig := L.Dispo;
    L.Dispo := j;
  End;

OBS: Dispo está vazia quando a lista está cheia Dispo está cheia quando a lista está vazia.


Lista Estática Encadeada