📅  最后修改于: 2023-12-03 15:26:36.353000             🧑  作者: Mango
本文介绍如何编写一个 Python 程序,用于查找二进制链表的十进制等价物。
二进制链表是一种链表,其中每个节点包含一个二进制数字,通过链接节点来表示一个二进制数字串。
例如,以下链表:
1 -> 0 -> 1
表示二进制数 101。
要查找二进制链表的十进制等价物,我们可以遍历链表上的每个节点,并将每个节点的二进制数字转换为十进制,然后将这些数字相加。
为了实现这个过程,我们可以编写一个函数来计算一个二进制数的十进制表示:
def binary_to_decimal(binary: str) -> int:
decimal = 0
for bit in binary:
decimal = decimal * 2 + int(bit)
return decimal
我们还需要编写一个函数,遍历链表,并计算其十进制等价物:
def binary_linked_list_to_decimal(head: ListNode) -> int:
decimal = 0
while head:
decimal = decimal * 2 + head.val
head = head.next
return decimal
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def binary_to_decimal(binary: str) -> int:
decimal = 0
for bit in binary:
decimal = decimal * 2 + int(bit)
return decimal
def binary_linked_list_to_decimal(head: ListNode) -> int:
decimal = 0
while head:
decimal = decimal * 2 + head.val
head = head.next
return decimal
if __name__ == "__main__":
linked_list = ListNode(1)
linked_list.next = ListNode(0)
linked_list.next.next = ListNode(1)
decimal = binary_linked_list_to_decimal(linked_list)
print(decimal)
输出:
5
编写一个 Python 程序,用于查找二进制链表的十进制等价物并不难。我们可以遍历链表上的每个节点并将其转换为十进制,然后将这些数字相加即可得到其十进制等价物。