Programa Javascript para eliminar Nodes alternativos de una lista vinculada

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

Deja una respuesta

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