Home • ECDL • Algoritmi • Java • Basi di dati • Seconda prova • Eccetera • Cerca nel sito

Lista con testa e coda

Precedente
SUPERIORE
Successiva

Puntatore di testa, puntatore di coda e tre nodi con informazioni A-B-C

Dichiarazioni

Type
  tInfo   = "qualsiasi"; {le informazioni nel nodo}
  pNodoTC = ^NodoTC;
  NodoTC  = record
    Info: tInfo;
    Succ: pNodoTC;
  end;
  ListaTC = record       {puntatori di testa e di coda}
    Testa,
    Coda: pNodoTC;
  end;

Aggiungere un nodo in Testa

procedure AggInTesta(var L: ListaTC; X: tInfo);
Var
  P: pNodoTC;
begin
  New(P);
  P^.Info:=X;
  P^.Succ:=L.Testa;
  if(L.Testa = Nil) then
    L.Coda:=P;
  L.Testa:=P;
end;

Aggiungere un nodo in Coda

procedure AggInCoda(Var L: ListaTC; X: tInfo);
Var
  P: pNodoTC;
begin
  New(P);
  P^.Info:=X;
  P^.Succ:=Nil;
  if(L.Testa = Nil) then
    L.Testa:=P
  else
    L.Coda^.Succ:=P;
  L.Coda:=P;
end;

Aggiungere un nodo in Ordine

procedure AggInOrdine(Var L: TListaTC; X: tInfo);
Var
  P, Q, R: pNodoTC;
begin
  New(P);
  P^.Info:=X;
  if(L.Testa = Nil) or (X <= L.Testa^.Info) then
    begin
      P^.Succ:=L.Testa;           {...aggiungi primo nodo...}
      L.Testa:=P;
      if(L.Coda = Nil) then       {...aggiungi in testa...}
        L.Coda:=P;
    end
  else if(L.Coda^.Info <= X) then
    begin
      P^.Succ:=Nil;               {...aggiungi in coda...}
      L.Coda^.Succ:=P;
      L.Coda:=P;
    end
  else
    begin
      Q:=L.Testa;                 {...aggiungi Prima di R...}
      R:=L.Testa^.Succ;
      while(R^.Chiave < N.Chiave) do
        begin
          Q:=R;
          R:=R^.Succ;
        end;
      Q^.Succ:=P;
      P^.Succ:=R;
    end;
end;

Eliminare un nodo in Testa

procedure EliInTesta(Var L: ListaTC);
Var
  P: pNodoTC;
begin
  if(L.Testa <> Nil) then
    begin
      P:=L.Testa;
      L.Testa:=L.Testa^.Succ;
      if(L.Testa = Nil) then
        L.Coda:=Nil;
      Dispose(P);
    end;
end;

Lista con testa e coda - ApPuNtIdIuNiNfOrMaTiCo

Home • ECDL • Algoritmi • Java • Basi di dati • Seconda prova • Eccetera • Cerca nel sito

Precedente
SUPERIORE
Successiva