Dada una lista enlazada individualmente, a partir del segundo Node, elimine todos los Nodes alternativos de la misma. Por ejemplo, si la lista enlazada dada es 1->2->3->4->5 entonces su función debería convertirla a 1->3->5, y si la lista enlazada dada es 1->2-> 3->4 luego conviértalo a 1->3.
Método 1 (iterativo):
realice un seguimiento de la anterior del Node que se eliminará. Primero, cambie el siguiente enlace del Node anterior y muévase iterativamente al siguiente Node.
Javascript
<script> // Javascript program to delete alternate // nodes of a linked list // Head of list var head; // Linked list Node class Node { constructor(val) { this.data = val; this.next = null; } } function deleteAlt() { if (head == null) return; var prev = head; var now = head.next; while (prev != null && now != null) { // Change next link of previous // node prev.next = now.next; // Free node now = null; // Update prev and now prev = prev.next; if (prev != null) now = prev.next; } } // Utility functions // Inserts a new Node at front of // the list. function push(new_data) { /* 1 & 2: Allocate the Node & Put in the data */ var 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; } // Function to print linked list function printList() { var temp = head; while (temp != null) { document.write(temp.data + " "); temp = temp.next; } document.write("<br/>"); } // Driver code /* Constructed Linked List is 1->2->3->4->5->null */ push(5); push(4); push(3); push(2); push(1); document.write( "Linked List before calling deleteAlt() <br/>"); printList(); deleteAlt(); document.write( "Linked List after calling deleteAlt()<br/> "); printList(); // This code is contributed by gauravrajput1 </script>
Producción:
List before calling deleteAlt() 1 2 3 4 5 List after calling deleteAlt() 1 3 5
Complejidad de tiempo: O(n) donde n es el número de Nodes en la lista enlazada dada.
Método 2 (recursivo):
el código recursivo utiliza el mismo enfoque que el método 1. El código recursivo es simple y breve, pero hace que la función recursiva O(n) llame a una lista vinculada de tamaño n.
Javascript
<script> /* Deletes alternate nodes of a list starting with head */ function deleteAlt(head) { if (head == null) return; var node = head.next; if (node == null) return; // Change the next link of head /* Recursively call for the new next of head */ head.next = node.next; head.next = deleteAlt(head.next); } // This code contributed by aashish1995 </script>
Complejidad de tiempo: O(n)
Consulte el artículo completo sobre Eliminar Nodes alternativos de una lista vinculada 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