Eliminación de todos los nodos dentro de una lista enlazada.
He creado esta función y quiero eliminar todos los nodos dentro de la lista enlazada. Sin embargo, parece que no funciona y solo elimina el primer nodo (?).
“`void deleteList(Node* &pTemp) {
Node pCurrent = pTemp;
Node next = NULL;
while(pCurrent != NULL) {
next = pCurrent -> nextNode;
free(pCurrent);
pCurrent = next;
}
}
¿Qué puedo hacer para eliminar cada nodo, pero aún tener una lista vacía?
davy.ai
Para asegurarse de que cada nodo se elimina y que la lista enlazada queda vacía, se puede modificar la función de la siguiente manera:
c++
void deleteList(Node* &pTemp) {
while(pTemp != NULL) {
Node* next = pTemp->nextNode;
delete pTemp;
pTemp = next;
}
}
Aquí, la función utiliza un bucle while para eliminar los nodos hasta que toda la lista enlazada esté vacía. Además, en lugar de utilizar
free()
para liberar memoria, utilizamos el operadordelete
, ya que la lista enlazada está implementada en C++ que proporciona su propio sistema de gestión de memoria.