C Program To Find Decimal Equivalent Of Binary Linked List
Last Updated :
22 Jun, 2022
Given a singly linked list of 0s and 1s find its decimal equivalent.
Input: 0->0->0->1->1->0->0->1->0
Output: 50
Input: 1->0->0
Output: 4
The decimal value of an empty linked list is considered as 0.
Initialize the result as 0. Traverse the linked list and for each node, multiply the result by 2 and add the node’s data to it.
C
#include<iostream>
using namespace std;
struct Node
{
bool data;
struct Node* next;
};
int decimalValue( struct Node *head)
{
int res = 0;
while (head != NULL)
{
res = (res << 1) + head->data;
head = head->next;
}
return res;
}
Node *newNode( bool data)
{
struct Node *temp = new Node;
temp->data = data;
temp->next = NULL;
return temp;
}
int main()
{
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;
}
|
Output :
Decimal value is 11
Time Complexity: O(n) where n is the number of nodes in the given linked list.
Auxiliary Space: O(1), no extra space is required, so it is a constant.
Please refer complete article on Decimal Equivalent of Binary Linked List for more details!
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...