Dada una lista enlazada, imprima el reverso usando una función recursiva. Por ejemplo, si la lista enlazada dada es 1->2->3->4, entonces la salida debería ser 4->3->2->1.
Tenga en cuenta que la pregunta es solo sobre la impresión del reverso. Para invertir la lista en sí, vea este
Nivel de dificultad: Novato
Algoritmo:
printReverse(head) 1. call print reverse for head->next 2. print head->data
Implementación:
Java
// Java program to print reverse // of a linked list class LinkedList { // Head of list Node head; // Linked list Node class Node { int data; Node next; Node(int d) { data = d; next = null; } } // Function to print reverse of // linked list void printReverse(Node head) { if (head == null) return; // Print list of head node printReverse(head.next); // After everything else is printed, // Print head System.out.print(head.data + " "); } // Utility Functions // Inserts a new Node at front // of the list. public void push(int new_data) { /* 1 & 2: Allocate the Node & Put in the data*/ Node new_node = new Node(new_data); // 3. Make next of new Node as head new_node.next = head; // 4. Move the head to point // to new Node head = new_node; } // Driver code public static void main(String args[]) { // Create linked list 1->2->3->4 LinkedList llist = new LinkedList(); llist.push(4); llist.push(3); llist.push(2); llist.push(1); llist.printReverse(llist.head); } } // This code is contributed by Rajat Mishra
Producción:
4 3 2 1
Complejidad de tiempo: O(n)
Complejidad espacial: O (n) para la pila de llamadas desde que se usa la recursividad
¡Consulte el artículo completo sobre Imprimir el reverso de una lista vinculada sin realmente revertir para obtener más detalles!
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