📜  查找二进制链表的十进制等价物的Python程序(1)

📅  最后修改于: 2023-12-03 15:26:36.353000             🧑  作者: Mango

查找二进制链表的十进制等价物的Python程序

本文介绍如何编写一个 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 程序,用于查找二进制链表的十进制等价物并不难。我们可以遍历链表上的每个节点并将其转换为十进制,然后将这些数字相加即可得到其十进制等价物。