Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình chuyển đổi danh sách được liên kết đại diện cho số nhị phân thành số nguyên thập phân trong Python

Giả sử chúng ta có một danh sách được liên kết đơn lẻ. danh sách được liên kết đại diện cho một số nhị phân với hầu hết các chữ số có nghĩa trước tiên, chúng tôi phải trả lại nó dưới dạng số thập phân.

Vì vậy, nếu đầu vào là [1,0,1,1,0], thì đầu ra sẽ là 22

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • l:=một danh sách mới
  • trong khi nút không rỗng, hãy thực hiện
    • chèn giá trị của nút vào cuối l
    • node:=next of node
  • k:=0, v:=0
  • đối với tôi trong phạm vi kích thước từ l - 1 đến 0, giảm đi 1, thực hiện
    • nếu l [i] giống 1, thì
      • v:=v + 2 ^ k
    • k:=k + 1
  • return v

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Ví dụ

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))

Đầu vào

[1,0,1,1,0]

Đầu ra

22