使用递归删除链表

使用递归删除给定的链表 方法 1) 如果head等于NULL,则链表为空,我们只返回。 2) 递归删除头节点后的链表。 3) 删除头部节点。

null

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 ( " Deleting linked list" );
deleteList(head);
// Since head now points to illgal address, we should set head = NULL:
head = NULL;
printf ( "Linked 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( "Deleting linked list" );
deleteList(head);
System.out.print( "Linked 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( "Deleting linked list" );
deleteList(head);
Console.Write( "Linked 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>


输出:

Deleting linked listLinked list deleted

?list=PLqM7alHXFySH41ZxzrPNj2pAYPOI8ITe7

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享