Delete the given linked list using recursion
Method:
- If head equal to NULL then linked list is empty, we simply return.
- Recursively delete linked list after head node.
- Delete head node.
Implementation:
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> |
Output
Deleting linked list Linked list deleted
Time Complexity: O(N), where N is the number of nodes in the given linked list.
Auxiliary Space: O(N) due to recursion call stack.
Recommended Articles