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.
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>
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