Algoritmo para C/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.
En Java, Python y JavaScript , se produce una recolección de basura automática, por lo que eliminar una lista vinculada es fácil. Solo necesito cambiar la cabeza a nulo.
Puede eliminar la lista de enlaces siguiendo 3 métodos:
C
// Delete linkedlist from beginiing X=head; head= head->next; free(x);
C
// Delete linkedlist from end Struct node* temp=head ; While(temp->next->next!=NULL) { Temp= temp->next ; } Temp->next= NULL;
C
// Delete linkedlist from middle for(int i=2;i<position; i++) { If(temp->next!=NULL) { Temp=temp->next; } } Temp->next=temp->next->next;
C++
// C++ program to delete a linked list #include <bits/stdc++.h> using namespace std; /* Link list node */ class Node { public: int data; Node* next; }; /* Function to delete the entire linked list */ void deleteList(Node** head_ref) { /* deref head_ref to get the real head */ Node* current = *head_ref; Node* next = NULL; while (current != NULL) { next = current->next; free(current); current = next; } /* deref 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(Node** head_ref, int new_data) { /* allocate node */ Node* new_node = new 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 */ Node* head = NULL; /* Use push() to construct below list 1->12->1->4->1 */ push(&head, 1); push(&head, 4); push(&head, 1); push(&head, 12); push(&head, 1); cout << "Deleting linked list"; deleteList(&head); cout << "\nLinked list deleted"; } // This is code is contributed by rathbhupendra
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) { /* deref 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; } /* deref 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 program to test count function*/ int main() { /* Start with the empty list */ struct Node* head = NULL; /* Use push() to construct below list 1->12->1->4->1 */ push(&head, 1); push(&head, 4); push(&head, 1); push(&head, 12); push(&head, 1); printf("\n Deleting linked list"); deleteList(&head); printf("\n Linked list deleted"); }
Java
// Java program to delete a linked list class LinkedList { Node head; // head of the list /* Linked List node */ class Node { int data; Node next; Node(int d) { data = d; next = null; } } /* Function deletes the entire linked list */ void deleteList() { head = null; } /* Inserts a new Node at front of the list. */ public void push(int new_data) { /* 1 & 2: Allocate the Node & Put in the data*/ Node new_node = new Node(new_data); /* 3. Make next of new Node as head */ new_node.next = head; /* 4. Move the head to point to new Node */ head = new_node; } public static void main(String [] args) { LinkedList llist = new LinkedList(); /* Use push() to construct below list 1->12->1->4->1 */ llist.push(1); llist.push(4); llist.push(1); llist.push(12); llist.push(1); System.out.println("Deleting the list"); llist.deleteList(); System.out.println("Linked list deleted"); } } // This code is contributed by Rajat Mishra
Python3
# Python3 program to delete all # the nodes of singly linked list # Node class class Node: # Function to initialise the node object def __init__(self, data): self.data = data # Assign data self.next = None # Initialize next as null # Constructor to initialize the node object class LinkedList: # Function to initialize head def __init__(self): self.head = None def deleteList(self): # initialize the current node current = self.head while current: next_to_current = current.next # move next node # delete the current node del current.data # set current equals prev node current = next_to_current # In python garbage collection happens # therefore, only # self.head = None # would also delete the link list # push function to add node in front of llist def push(self, new_data): # Allocate the Node & # Put in the data new_node = Node(new_data) # Make next of new Node as head new_node.next = self.head # Move the head to point to new Node self.head = new_node # Use push() to construct below # list 1-> 12-> 1-> 4-> 1 if __name__ == '__main__': llist = LinkedList() llist.push(1) llist.push(4) llist.push(1) llist.push(12) llist.push(1) print("Deleting linked list") llist.deleteList() print("Linked list deleted") # This article is provided by Shrikant13
C#
// C# program to delete a linked list using System; public class LinkedList { Node head; // head of the list /* Linked List node */ class Node { public int data; public Node next; public Node(int d) { data = d; next = null; } } /* Function deletes the entire linked list */ void deleteList() { head = null; } /* Inserts a new Node at front of the list. */ public void push(int new_data) { /* 1 & 2: Allocate the Node & Put in the data*/ Node new_node = new Node(new_data); /* 3. Make next of new Node as head */ new_node.next = head; /* 4. Move the head to point to new Node */ head = new_node; } // Driver code public static void Main(String [] args) { LinkedList llist = new LinkedList(); /* Use push() to construct below list 1->12->1->4->1 */ llist.push(1); llist.push(4); llist.push(1); llist.push(12); llist.push(1); Console.WriteLine("Deleting the list"); llist.deleteList(); Console.WriteLine("Linked list deleted"); } } // This code has been contributed by Rajput-Ji
Javascript
<script> // javascript program to delete a linked list var head; // head of the list /* Linked List node */ class Node { constructor(val) { this.data = val; this.next = null; } } /* Function deletes the entire linked list */ function deleteList() { head = null; } /* Inserts a new Node at front of the list. */ function push(new_data) { /* * 1 & 2: Allocate the Node & Put in the data */ var new_node = new Node(new_data); /* 3. Make next of new Node as head */ new_node.next = head; /* 4. Move the head to point to new Node */ head = new_node; } /* * Use push() to construct below list 1->12->1->4->1 */ push(1); push(4); push(1); push(12); push(1); document.write("Deleting the list<br/>"); deleteList(); document.write("Linked list deleted"); // This code contributed by Rajput-Ji </script>
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