📜  查找二进制链表的十进制等效项的 C++ 程序(1)

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

查找二进制链表的十进制等效项的 C++ 程序

简介

在计算机中,二进制计数是一种常见的数值表示方法。在某些情况下,需要将二进制表示的数字转换为十进制表示数字。本文介绍了如何编写一个C++程序来查找二进制链表的十进制等效项。

实现步骤
步骤一:定义链表节点

首先要定义一个链表节点结构体,节点包含一个二进制数值成员和指向下一个节点的指针。

struct ListNode {
    int val;
    ListNode* next;
    ListNode(int x) : val(x), next(NULL) {}
};
步骤二:将链表转成二进制数值

将链表转成二进制数值需要遍历链表,并将每个节点存储的二进制位组合在一起。需要注意的是,由于二进制数值可能比int类型的最大值还要大,因此我们需要使用unsigned long long类型来存储结果。

unsigned long long binaryToDecimal(ListNode* head) {
    unsigned long long result = 0;
    while (head) {
        result = (result << 1) + head->val;
        head = head->next;
    }
    return result;
}
步骤三:测试程序

为了测试上述函数,我们需要构建一个二进制链表,并将其转换为十进制数值。以下是使用示例代码:

int main() {
    ListNode* head = new ListNode(1);
    head->next = new ListNode(0);
    head->next->next = new ListNode(1);
    head->next->next->next = new ListNode(0);
    cout << binaryToDecimal(head) << endl;
    return 0;
}

上述代码的输出为“5”,即二进制数“101”的十进制等效项。

结论

通过上述步骤,我们实现了一个查找二进制链表的十进制等效项的C++程序。