es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  ,

Answer

  1. Avatar for 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 operador delete, ya que la lista enlazada está implementada en C++ que proporciona su propio sistema de gestión de memoria.

Comments are closed.