Skip to content
Related Articles

Related Articles

Improve Article
Decimal Equivalent of Binary Linked List
  • Difficulty Level : Easy
  • Last Updated : 13 May, 2021

Given a singly linked list of 0s and 1s find its decimal equivalent.

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

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

The decimal value of an empty linked list is considered as 0.

Initialize the result as 0. Traverse the linked list and for each node, multiply the result by 2 and add the node’s data to it.

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>

Output : 

Decimal value is 11



This article is contributed by Shivam Gupta. If you like GeeksforGeeks and would like to contribute, you can also write an article and mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
 

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with industry experts, please refer DSA Live Classes 




My Personal Notes arrow_drop_up
Recommended Articles
Page :