Equivalente decimal de la lista enlazada binaria

Dada una lista unida de 0 y 1, encuentre su equivalente decimal.

   Input  : 0->0->0->1->1->0->0->1->0
   Output : 50   

   Input  : 1->0->0
   Output : 4

El valor decimal de una lista enlazada vacía se considera 0.

C++

// C++ Program to find decimal value of 
// binary linked list 
#include <bits/stdc++.h>
using namespace std;
  
/* Link list Node */
class Node 
{ 
    public:
    bool data; 
    Node* next; 
}; 
  
/* Returns decimal value of binary linked list */
int decimalValue(Node *head) 
{ 
    // Initialized result 
    int res = 0; 
  
    // Traverse linked list 
    while (head != NULL) 
    { 
        // Multiply result by 2 and add 
        // head's data 
        res = (res << 1) + head->data; 
  
        // Move next 
        head = head->next; 
    } 
    return res; 
} 
  
// Utility function to create a new node. 
Node *newNode(bool data) 
{ 
    Node *temp = new Node; 
    temp->data = data; 
    temp->next = NULL; 
    return temp; 
} 
  
/* Driver program to test above function*/
int main() 
{ 
    /* Start with the empty list */
    Node* head = newNode(1); 
    head->next = newNode(0); 
    head->next->next = newNode(1); 
    head->next->next->next = newNode(1); 
  
    cout << "Decimal value is "
        << decimalValue(head); 
  
    return 0; 
} 
  
// This is code is contributed by rathbhupendra

C

// C Program to find decimal value of
// binary linked list
#include<iostream>
using namespace std;
  
/* Link list Node */
struct Node
{
    bool data;
    struct Node* next;
};
  
/* Returns decimal value of binary linked list */
int decimalValue(struct Node *head)
{
    // Initialized result
    int  res = 0;
  
    // Traverse linked list
    while (head != NULL)
    {
        // Multiply result by 2 and add
        // head's data
        res = (res  << 1) + head->data;
  
        // Move next
        head = head->next;
    }
    return res;
}
  
// Utility function to create a new node.
Node *newNode(bool data)
{
    struct Node *temp = new Node;
    temp->data = data;
    temp->next = NULL;
    return temp;
}
  
/* Driver program to test above function*/
int main()
{
    /* Start with the empty list */
    struct Node* head = newNode(1);
    head->next = newNode(0);
    head->next->next = newNode(1);
    head->next->next->next = newNode(1);
  
    cout << "Decimal value is "
         << decimalValue(head);
  
    return 0;
}

Java

// Java Program to find decimal value of 
// binary linked list 
class GFG
{
      
// Link list Node /
static class Node 
{ 
    boolean data; 
    Node next; 
}; 
  
// Returns decimal value of binary linked list /
static int decimalValue( Node head) 
{ 
    // Initialized result 
    int res = 0; 
  
    // Traverse linked list 
    while (head != null) 
    { 
        // Multiply result by 2 and add 
        // head's data 
        res = (res << 1) + (head.data?1:0); 
  
        // Move next 
        head = head.next; 
    } 
    return res; 
} 
  
// Utility function to create a new node. 
static Node newNode(int data) 
{ 
    Node temp = new Node(); 
    temp.data = (data==1? true:false); 
    temp.next = null; 
    return temp; 
} 
  
// Driver code/
public static void main(String args[])
{ 
    // Start with the empty list /
    Node head = newNode(1); 
    head.next = newNode(0); 
    head.next.next = newNode(1); 
    head.next.next.next = newNode(1); 
  
    System.out.print( "Decimal value is "+decimalValue(head)); 
}
}
  
// This code is contributed by Arnab Kundu

Python3

# Python3 program to find decimal value 
# of binary linked list
  
# Node Class
class Node:
      
    # Function to initialise the 
    # node object
    def __init__(self, data):
          
        # Assign data
        self.data = data 
          
        # Initialize next as null
        self.next = None 
  
# Linked List class contains 
# a Node object
class LinkedList:
  
    # Function to initialize head
    def __init__(self):
          
        self.head = None
  
    # Returns decimal value of binary
    # linked list
    def decimalValue(self, head):
          
        # Initialized result
        res = 0
  
        # Traverse linked list
        while head:
  
            # Multiply result by 2 and 
            # add head's data 
            res = (res << 1) + head.data
  
            # Move Next
            head = head.next
              
        return res
  
# Driver code
if __name__ == '__main__':
  
    #Start with the empty list 
    llist = LinkedList()
  
    llist.head = Node(1)
    llist.head.next = Node(0)
    llist.head.next.next = Node(1)
    llist.head.next.next.next = Node(1)
      
    print("Decimal Value is {}".format(
           llist.decimalValue(llist.head)))
  
# This code is contributed by Mohit Jangra

C#

// C# Program to find decimal value of 
// binary linked list 
using System;
  
class GFG
{
      
// Link list Node /
public class Node 
{ 
    public Boolean data; 
    public Node next; 
}; 
  
// Returns decimal value of binary linked list
static int decimalValue( Node head) 
{ 
    // Initialized result 
    int res = 0; 
  
    // Traverse linked list 
    while (head != null) 
    { 
        // Multiply result by 2 and add 
        // head's data 
        res = (res << 1) + (head.data ? 1 : 0); 
  
        // Move next 
        head = head.next; 
    } 
    return res; 
} 
  
// Utility function to create a new node. 
static Node newNode(int data) 
{ 
    Node temp = new Node(); 
    temp.data = (data == 1 ? true : false); 
    temp.next = null; 
    return temp; 
} 
  
// Driver cod
public static void Main(String []args)
{ 
    // Start with the empty list 
    Node head = newNode(1); 
    head.next = newNode(0); 
    head.next.next = newNode(1); 
    head.next.next.next = newNode(1); 
  
    Console.WriteLine("Decimal value is " + 
                       decimalValue(head)); 
}
}
  
// This code is contributed by Rajput-Ji

Javascript

<script>
  
// Javascript Program to find decimal value of 
// binary linked list     
// Link list Node /
     class Node {
         constructor(){
         this.data = true;
         this.next = null;
    }
    }
  
    // Returns decimal value of binary linked list /
    function decimalValue(head) {
        // Initialized result
        var res = 0;
  
        // Traverse linked list
        while (head != null) {
            // Multiply result by 2 and add
            // head's data
            res = (res << 1) + (head.data ? 1 : 0);
  
            // Move next
            head = head.next;
        }
        return res;
    }
  
    // Utility function to create a new node.
    function newNode(data) {
var temp = new Node();
        temp.data = (data == 1 ? true : false);
        temp.next = null;
        return temp;
    }
  
    // Driver code/
      
        // Start with the empty list /
var head = newNode(1);
        head.next = newNode(0);
        head.next.next = newNode(1);
        head.next.next.next = newNode(1);
  
        document.write("Decimal value is " 
        + decimalValue(head));
  
// This code contributed by aashish1995 
  
</script>

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 *