Nombre de usuario   Contraseña       Register

Eliminación de un elemento de una lista lineal relacionados

Para eliminar un elemento de la lista, en primer lugar los indicadores se establecen correctamente y entonces la memoria ocupada por el nodo que se ha de eliminar desasignado (liberados). Este tutorial incluye la supresión de un nodo de las tres posiciones siguientes:

  1. Al principio de la lista de
  2. Al final de la lista de
  3. Después de un elemento dado

Eliminación de los principio de la lista

Un elemento desde el principio de la lista se puede eliminar mediante la realización de los siguientes pasos:

  • Asigne el valor de la cabeza (la dirección del primer elemento de la lista) a una variable temporal (por ejemplo, temp)
  • Asigne el valor del campo siguiente puntero del primer nodo de la cabeza.
  • Liberar la memoria ocupada por el nodo al que apunta Temp.
  void   deletefrombeginning (nodo ** cabeza) 
  { 
  nodo * temp; 
  si   (* cabeza == NULL) 
  volver   ; 
  algo más 
  { 
  temp = * cabeza; 
  * cabeza = (* cabeza) -> siguiente; 
  libre (temp); 
  } 
  } 

Eliminación de la final de la lista

Para eliminar de la final de la lista, lo primero que recorrer hasta el último elemento segundo de la lista. Entonces, el último elemento puede ser eliminado mediante la realización de los siguientes pasos:

  • Asignar el campo puntero siguiente del último nodo segundo a una variable temporal (por ejemplo temp).
  • Asignar NULL al campo siguiente puntero del nodo último segundo de la lista.
  • Liberar la memoria ocupada por el nodo al que apunta Temp.
  void   deletefromend (nodo ** cabeza) 
  { 
  nodo * temp, * anterior; 
  si   (* cabeza == NULL) 
  volver   ; 
  algo más   si   ((* cabeza) -> siguiente == NULL) 
  { 
  temp = * cabeza; 
  * cabeza = NULL; 
  libre (temp); 
  } 
  algo más 
  { 
  prev = * cabeza; 
  temp = (* cabeza) -> siguiente; 
  mientras   (temp-> siguiente! = NULL) 
  { 
  anterior = temp; 
  temp = temp-> siguiente; 
  } 
  prev-> next = NULL; 
  libre (temp); 
  } 
  } 

Eliminar después de un elemento dado

Para eliminar un elemento después de un elemento dado, en primer lugar nos encontramos con la ubicación, sayprev, del elemento después de que el elemento puede ser eliminado mediante la realización de los siguientes pasos:

  • Asignar el campo siguiente puntero del nodo indicado por el anterior a una variable temporal (por ejemplo temp).
  • Asignar el campo siguiente puntero del nodo que se suprime en el campo siguiente puntero del nodo al que apunta anterior.
  • Liberar la memoria ocupada por el nodo al que apunta Temp.
  void   deleteafterelement (nodo * cabeza,   int   después) 
  { 
  nodo * temp, * anterior; 
  = anterior searchunsortedlist (cabeza, después); 
  si   (prev == NULL)   / * elemento "después de" no se encuentra * / 
  volver   ; 
  temp = anterior-> siguiente; 
  anterior-> siguiente = temp-> siguiente; 
  libre (temp); 
  } 

Borrar toda la lista

Antes de que el programa termina, la lista completa se deben eliminar para que la memoria ocupada por los nodos de la lista se libera correctamente al sistema operativo. Esta tarea puede llevarse a cabo mediante la realización de los siguientes pasos:

  • Asignar el puntero de la cabeza a una variable temporal, por ejemplo temp.
  • Avanzar el puntero de cabeza para el siguiente nodo.
  • Liberar la memoria ocupada por el nodo al que apunta Temp.

Los pasos anteriores se repiten hasta que toda la lista se elimina.

  void   (deletelist nodo ** cabeza) 
  { 
  nodo * temp; 
  mientras   (* cabeza! = NULL) 
  { 
  temp = * cabeza; 
  * cabeza = (* cabeza) -> siguiente; 
  libre (temp); 
  } 
  } 

Discuss Eliminación de un elemento de una lista lineal relacionados in the forums.