Elimine la lista vinculada dada utilizando
el método
de recursión 1) Si la cabeza es igual a NULL, la lista vinculada está vacía, simplemente regresamos.
2) Eliminar recursivamente la lista vinculada después del Node principal.
3) Eliminar el Node principal.
C++
// C++ program to recursively delete a linked list #include <bits/stdc++.h> /* Link list node */ struct Node { int data; struct Node* next; }; /* Recursive Function to delete the entire linked list */ void deleteList(struct Node* head) { if (head == NULL) return; deleteList(head->next); free(head); } /* 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) { struct Node* new_node = new Node; new_node->data = new_data; new_node->next = (*head_ref); (*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); // Since head now points to illgal address, we should set head = NULL: head = NULL; printf("\nLinked list deleted"); return 0; }
Java
// Java program to recursively delete a linked list class GFG { /* Link list node */ static class Node { int data; Node next; }; /* Recursive Function to delete the entire linked list */ static void deleteList(Node head) { if (head == null) return; deleteList(head.next); System.gc(); } /* 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. */ static void push(Node head_ref, int new_data) { Node new_node = new Node(); new_node.data = new_data; new_node.next = head_ref; head_ref = new_node; } /* Driver code*/ public static void main(String[] args) { /* Start with the empty list */ Node head = new Node(); /* 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); System.out.print("\nDeleting linked list"); deleteList(head); System.out.print("\nLinked list deleted"); } } /* This code contributed by PrinciRaj1992 */
Python3
# Python3 program to recursively delete # a linked list import math # Link list node class Node: def __init__(self, data): self.data = data self.next = None # Recursive Function to delete # the entire linked list def deleteList(head): if (head == None): return deleteList(head.next) # free(head) # Given a reference (pointer to pointer) to the head # of a list and an int, head=push a new node # on the front of the list. def push(head_ref, new_data): new_node = Node(new_data) new_node.data = new_data new_node.next = head_ref head_ref = new_node return head_ref # Driver Code if __name__=='__main__': # Start with the empty list head = None # Use head=push() to construct below list 1.12.1.4.1 head = push(head, 1) head = push(head, 4) head = push(head, 1) head = push(head, 12) head = push(head, 1) print("Deleting linked list") deleteList(head) print("Linked list deleted") # This code is contributed by Srathore
C#
// C# program to recursively delete a linked list using System; class GFG { /* Link list node */ public class Node { public int data; public Node next; }; /* Recursive Function to delete the entire linked list */ static void deleteList(Node head) { if (head == null) return; deleteList(head.next); } /* 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. */ static void push(Node head_ref, int new_data) { Node new_node = new Node(); new_node.data = new_data; new_node.next = head_ref; head_ref = new_node; } /* Driver code*/ public static void Main(String[] args) { /* Start with the empty list */ Node head = new Node(); /* 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); Console.Write("\nDeleting linked list"); deleteList(head); Console.Write("\nLinked list deleted"); } } // This code contributed by Rajput-Ji
Javascript
<script> // JavaScript program to recursively delete a linked list /* Link list node */ class Node { constructor() { this.data = 0; this.next = null; } }; /* Recursive Function to delete the entire linked list */ function deleteList(head) { if (head == null) return; deleteList(head.next); } /* 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. */ function push(head_ref, new_data) { var new_node = new Node(); new_node.data = new_data; new_node.next = head_ref; head_ref = new_node; } /* Driver code*/ /* Start with the empty list */ var head = new Node(); /* 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); document.write("Deleting linked list"); deleteList(head); document.write("<br>Linked list deleted"); </script>
Producción:
Deleting linked list Linked list deleted
?list=PLqM7alHXFySH41ZxzrPNj2pAYPOI8ITe7
Publicación traducida automáticamente
Artículo escrito por Shahnawaz_Ali y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA