Syntax error Program to convert Linked list representing binary number to decimal integer in Python

Program to convert Linked list representing binary number to decimal integer in Python



Suppose we have a singly linked list. the linked list is representing a binary number with most significant digits first, we have to return it as decimal number.

So, if the input is like [1,0,1,1,0], then the output will be 22

To solve this, we will follow these steps −

  • l := a new list
  • while node is not null, do
    • insert value of node at the end of l
    • node:= next of node
  • k := 0, v:= 0
  • for i in range size of l - 1 to 0, decrease by 1, do
    • if l[i] is same as 1, then
      • v := v + 2^k
    • k := k + 1
  • return v

Let us see the following implementation to get better understanding −

Example

 Live Demo

class ListNode:
   def __init__(self, data, next = None):
      self.val = data
      self.next = next
def make_list(elements):
   head = ListNode(elements[0])
   for element in elements[1:]:
      ptr = head
      while ptr.next:
         ptr = ptr.next
         ptr.next = ListNode(element)
   return head
class Solution:
   def solve(self, node):
      l = []
      while node:
         l.append(node.val)
         node=node.next
         k = 0
         v=0
         for i in range(len(l)-1,-1,-1):
            if (l[i]==1):
            v += (2**k)
k+=1
return v
ob = Solution()
head = make_list([1,0,1,1,0])
print(ob.solve(head))

Input

[1,0,1,1,0]

Output

22
Updated on: 2020-10-06T06:14:23+05:30

2K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements