Algoritmo para C:
iterar a través de la lista enlazada y eliminar todos los Nodes uno por uno. El punto principal aquí es no acceder al siguiente del puntero actual si se elimina el puntero actual.
Implementación:
C
// C program to delete a linked list #include<stdio.h> #include<stdlib.h> #include<assert.h> // Link list node struct Node { int data; struct Node* next; }; // Function to delete the entire // linked list void deleteList(struct Node** head_ref) { // define head_ref to get the real head struct Node* current = *head_ref; struct Node* next; while (current != NULL) { next = current->next; free(current); current = next; } // Define head_ref to affect the real // head back in the caller. *head_ref = NULL; } /* Given a reference (pointer to pointer) to the head of a list and an int, push a new node on the front of the list. */ void push(struct Node** head_ref, int new_data) { // Allocate node struct Node* new_node = (struct Node*) malloc(sizeof(struct Node)); // Put in the data new_node->data = new_data; // Link the old list off the new node new_node->next = (*head_ref); // Move the head to point to the new node (*head_ref) = new_node; } // Driver code int main() { // Start with the empty list struct Node* head = NULL; // Use push() to construct list // 1->12->1->4->1 push(&head, 1); push(&head, 4); push(&head, 1); push(&head, 12); push(&head, 1); printf("Deleting linked list"); deleteList(&head); printf("Linked list deleted"); }
Producción:
Deleting linked list Linked list deleted
Complejidad temporal: O(n)
Espacio auxiliar: O(1)
Consulte el artículo completo sobre Escribir una función para eliminar una lista vinculada para obtener más detalles.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA