Kimossab

Remover Nó de Lista Simplesmente Ligada

Jun 4th, 2014
292
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.81 KB | None | 0 0
  1. void RemoverElemento(Lista *L, NoLista *N)
  2. {
  3.     if(!L || !L->Inicio) //Se a lista existe e tem inicio
  4.         return;
  5.     NoLista *Aux = L->Inicio, *Aux2 = NULL; // Auxiliares
  6.     while(Aux) //enquanto exitir Aux
  7.     {
  8.         if(Aux == N) //Se o Aux for igual ao no a remover
  9.             break; //Para o ciclo
  10.         Aux2 = Aux; //Aux2 fica com o valor do no anterior
  11.         Aux = Aux->Prox;
  12.     }
  13.    
  14.     if(Aux) //Se o N realmente pertencia a L
  15.     {
  16.         if(!Aux2) //Se o Aux2 não existir quer dizer que o N é o primeiro elemento da lista
  17.             L->Inicio = Aux->prox;
  18.         else
  19.             Aux2->prox = Aux->prox; //O proximo do anterior(de Aux) passa para o proximo do no a remover(Aux)
  20.         free(Aux->Info->N);// se alocaste memória dentro da informação do nó precisas disto
  21.         free(Aux->Info); //liberta a parte "Info" da estrutura
  22.         free(Aux); // liberta o nó
  23.     }
  24. }
Advertisement
Add Comment
Please, Sign In to add comment