Open In App

Python Program To Find Decimal Equivalent Of Binary Linked List

Last Updated : 22 Jun, 2022
Comments
Improve
Suggest changes
Like Article
Like
Report

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.

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

Output : 

Decimal value is 11

Time Complexity: O(n) where n is the number of nodes in the given linked list.
Auxiliary Space: O(1), no extra space is required, so it is a constant.

Please refer complete article on Decimal Equivalent of Binary Linked List for more details!


Next Article

Similar Reads