Inserción recursiva y lista enlazada transversal

Hemos discutido diferentes métodos de inserción de listas enlazadas . ¿Cómo crear recursivamente una lista enlazada?

Insertar recursivamente al final:  para crear una lista enlazada usando recursividad, siga estos pasos. Los pasos a continuación insertan un nuevo Node recursivamente al final de la lista enlazada.  

C++

// Function to insert a new node at the
// end of linked list using recursion.
Node* insertEnd(Node* head, int data)
{
    // If linked list is empty, create a
    // new node (Assuming newNode() allocates
    // a new node with given data)
    if (head == NULL)
         return newNode(data);
 
    // If we have not reached end, keep traversing
    // recursively.
    else
        head->next = insertEnd(head->next, data);
    return head;
}

Java

// Function to insert a new node at the
// end of linked list using recursion.
static Node insertEnd(Node head, int data)
{
   
    // If linked list is empty, create a
    // new node (Assuming newNode() allocates
    // a new node with given data)
    if (head == null)
         return newNode(data);
  
    // If we have not reached end, keep traversing
    // recursively.
    else
        head.next = insertEnd(head.next, data);
   
    return head;
}
 
// This code is contributed by rutvik_56

Python3

# Function to insert a new node at the
# end of linked list using recursion.
def insertEnd(head, data):
   
    # If linked list is empty, create a
    # new node (Assuming newNode() allocates
    # a new node with given data)
    if (head == None):
        return newNode(data)
  
    # If we have not reached end,
    # keep traversing recursively.
    else:
        head.next = insertEnd(head.next, data)
         
    return head
 
# This code is contributed by divyeshrabadiya07

C#

// Function to insert a new node at the 
// end of linked list using recursion. 
static Node insertEnd(Node head, int data) 
{ 
   
    // If linked list is empty, create a 
    // new node (Assuming newNode() allocates 
    // a new node with given data) 
    if (head == null) 
        return newNode(data); 
   
    // If we have not reached end, keep traversing 
    // recursively. 
    else
        head.next = insertEnd(head.next, data); 
   
    return head; 
}
 
// This code is contributed by divyesh072019

Javascript

<script>
 
// Function to insert a new node at the
// end of linked list using recursion.
function insertEnd(head , data)
{
     
    // If linked list is empty, create a
    // new node (Assuming newNode() allocates
    // a new node with given data)
    if (head == null)
    {
        return newNode(data);
    }
 
    // If we have not reached end, keep traversing
    // recursively.
    else
    {
        head.next = insertEnd(head.next, data);
    }
    return head;
}
 
// This code is contributed by shubhamsingh10
 
</script>

Recorriendo recursivamente la lista: 
La idea es simple, imprimimos el Node actual y recurrimos para la lista restante.  

 

Preparación completa de la entrevista - GFG Implementación:

C++

void traverse(Node* head)
{
    if (head == NULL)
       return;
     
    // If head is not NULL, print current node
    // and recur for remaining list  
    cout << head->data << " ";
 
    traverse(head->next);
}

Java

static void traverse(Node head)
{
    if (head == null)
    return;
     
    // If head is not null, print current node
    // and recur for remaining list
    System.out.print( head.data + " ");
 
    traverse(head.next);
}
 
// This code is contributed by SUBHAMSINGH10

Python3

def traverse(head):
    if (head == None):
        return
      
    # If head is not None, print current node
    # and recur for remaining list
    print(head.data, end = " ");
    traverse(head.next)
     
    # This code is contributed by Pratham76

C#

static void traverse(Node head)
{
    if (head == null)
    return;
     
    // If head is not null, print current node
    // and recur for remaining list
    Console.Write(head.data + " ");
 
    traverse(head.next);
}

 
Programa completo:  a continuación se muestra el programa completo para demostrar el funcionamiento de insertar y recorrer una lista enlazada. 

C++

// Recursive C++ program to recursively insert
// a node and recursively print the list.
#include <bits/stdc++.h>
using namespace std;
struct Node {
    int data;
    Node* next;
};
 
// Allocates a new node with given data
Node *newNode(int data)
{
    Node *new_node = new Node;
    new_node->data = data;
    new_node->next = NULL;
    return new_node;
}
 
// Function to insert a new node at the
// end of linked list using recursion.
Node* insertEnd(Node* head, int data)
{
    // If linked list is empty, create a
    // new node (Assuming newNode() allocates
    // a new node with given data)
    if (head == NULL)
         return newNode(data);
 
    // If we have not reached end, keep traversing
    // recursively.
    else
        head->next = insertEnd(head->next, data);
    return head;
}
 
void traverse(Node* head)
{
    if (head == NULL)
       return;
     
    // If head is not NULL, print current node
    // and recur for remaining list  
    cout << head->data << " ";
 
    traverse(head->next);
}
 
// Driver code
int main()
{
    Node* head = NULL;
    head = insertEnd(head, 6);
    head = insertEnd(head, 8);
    head = insertEnd(head, 10);
    head = insertEnd(head, 12);
    head = insertEnd(head, 14);
    traverse(head);
}

Java

// Recursive Java program to recursively insert
// a node and recursively print the list.
class GFG
{
     
static class Node
{
    int data;
    Node next;
};
 
// Allocates a new node with given data
static Node newNode(int data)
{
    Node new_node = new Node();
    new_node.data = data;
    new_node.next = null;
    return new_node;
}
 
// Function to insert a new node at the
// end of linked list using recursion.
static Node insertEnd(Node head, int data)
{
    // If linked list is empty, create a
    // new node (Assuming newNode() allocates
    // a new node with given data)
    if (head == null)
        return newNode(data);
 
    // If we have not reached end, keep traversing
    // recursively.
    else
        head.next = insertEnd(head.next, data);
    return head;
}
 
static void traverse(Node head)
{
    if (head == null)
    return;
     
    // If head is not null, print current node
    // and recur for remaining list
    System.out.print( head.data + " ");
 
    traverse(head.next);
}
 
// Driver code
public static void main(String args[])
{
    Node head = null;
    head = insertEnd(head, 6);
    head = insertEnd(head, 8);
    head = insertEnd(head, 10);
    head = insertEnd(head, 12);
    head = insertEnd(head, 14);
    traverse(head);
}
}
 
// This code is contributed by andrew1234

Python3

# Recursive Python3 program to
# recursively insert a node and
# recursively print the list.
import math
 
class Node:
    def __init__(self, data):
        self.data = data
        self.next = None
 
# Allocates a new node with given data
def newNode(data):
    new_node = Node(data)
    new_node.data = data
    new_node.next = None
    return new_node
 
# Function to insert a new node at the
# end of linked list using recursion.
def insertEnd(head, data):
     
    # If linked list is empty, create a
    # new node (Assuming newNode() allocates
    # a new node with given data)
    if (head == None):
        return newNode(data)
 
    # If we have not reached end,
    # keep traversing recursively.
    else:
        head.next = insertEnd(head.next, data)
    return head
 
def traverse(head):
    if (head == None):
        return
     
    # If head is not None, print current node
    # and recur for remaining list
    print(head.data, end = " ");
    traverse(head.next)
 
# Driver code
if __name__=='__main__':
    head = None
    head = insertEnd(head, 6)
    head = insertEnd(head, 8)
    head = insertEnd(head, 10)
    head = insertEnd(head, 12)
    head = insertEnd(head, 14)
    traverse(head)
 
# This code is contributed by sapna singh

C#

// Recursive C# program to recursively insert
// a node and recursively print the list.
using System;
 
class GFG
{
     
public class Node
{
    public int data;
    public Node next;
};
 
// Allocates a new node with given data
static Node newNode(int data)
{
    Node new_node = new Node();
    new_node.data = data;
    new_node.next = null;
    return new_node;
}
 
// Function to insert a new node at the
// end of linked list using recursion.
static Node insertEnd(Node head, int data)
{
    // If linked list is empty, create a
    // new node (Assuming newNode() allocates
    // a new node with given data)
    if (head == null)
        return newNode(data);
 
    // If we have not reached end, keep traversing
    // recursively.
    else
        head.next = insertEnd(head.next, data);
    return head;
}
 
static void traverse(Node head)
{
    if (head == null)
    return;
     
    // If head is not null, print current node
    // and recur for remaining list
    Console.Write(head.data + " ");
 
    traverse(head.next);
}
 
// Driver code
public static void Main(String []args)
{
    Node head = null;
    head = insertEnd(head, 6);
    head = insertEnd(head, 8);
    head = insertEnd(head, 10);
    head = insertEnd(head, 12);
    head = insertEnd(head, 14);
    traverse(head);
}
}
 
// This code is contributed by 29AjayKumar

Javascript

<script>
    // Recursive Javascript program to recursively insert
    // a node and recursively print the list.
     
    class Node
    {
        constructor(data) {
           this.next = null;
           this.data = data;
        }
    }
     
    // Allocates a new node with given data
    function newNode(data)
    {
        let new_node = new Node(data);
        return new_node;
    }
 
    // Function to insert a new node at the
    // end of linked list using recursion.
    function insertEnd(head, data)
    {
        // If linked list is empty, create a
        // new node (Assuming newNode() allocates
        // a new node with given data)
        if (head == null)
            return newNode(data);
 
        // If we have not reached end, keep traversing
        // recursively.
        else
            head.next = insertEnd(head.next, data);
        return head;
    }
 
    function traverse(head)
    {
        if (head == null)
            return;
 
        // If head is not null, print current node
        // and recur for remaining list
        document.write(head.data + " ");
 
        traverse(head.next);
    }
     
    let head = null;
    head = insertEnd(head, 6);
    head = insertEnd(head, 8);
    head = insertEnd(head, 10);
    head = insertEnd(head, 12);
    head = insertEnd(head, 14);
    traverse(head);
 
// This code is contributed by mukesh07.
</script>
Producción

6 8 10 12 14 

Este artículo es una contribución de AMIT KUMAR . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. 

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *