📜  C程序查找二进制链接列表的十进制等价物

📅  最后修改于: 2022-05-13 01:57:39.453000             🧑  作者: Mango

C程序查找二进制链接列表的十进制等价物

给定一个 0 和 1 的单链表,找到它的十进制等价物。

Input: 0->0->0->1->1->0->0->1->0
Output: 50   

Input: 1->0->0
Output: 4

空链表的十进制值被认为是 0。

将结果初始化为 0。遍历链表,对于每个节点,将结果乘以 2 并将节点的数据添加到其中。

C
// C Program to find decimal value 
// of binary linked list
#include
using namespace std;
  
// Link list Node 
struct Node
{
    bool data;
    struct Node* next;
};
  
/* Returns decimal value of binary 
   linked list */
int decimalValue(struct Node *head)
{
    // Initialized result
    int  res = 0;
  
    // Traverse linked list
    while (head != NULL)
    {
        // Multiply result by 2 and add
        // head's data
        res = (res  << 1) + head->data;
  
        // Move next
        head = head->next;
    }
    return res;
}
  
// Utility function to create a 
// new node.
Node *newNode(bool data)
{
    struct Node *temp = new Node;
    temp->data = data;
    temp->next = NULL;
    return temp;
}
  
// Driver code
int main()
{
    // Start with the empty list 
    struct Node* head = newNode(1);
    head->next = newNode(0);
    head->next->next = newNode(1);
    head->next->next->next = newNode(1);
  
    cout << "Decimal value is " << 
             decimalValue(head);
    return 0;
}


输出 :

Decimal value is 11

有关详细信息,请参阅有关二进制链表的十进制等价的完整文章!