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.
Java
// Java Program to find decimal value // of binary linked list class GFG{ // Link list Node static class Node { boolean data; Node next; }; // Returns decimal value of binary // linked liststatic int decimalValue(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?1:0); // Move next head = head.next; } return res; } // Utility function to create a // new node. static Node newNode(int data) { Node temp = new Node(); temp.data = (data == 1 ? true : false); temp.next = null; return temp; } // Driver codepublic static void main(String args[]){ // Start with the empty list Node head = newNode(1); head.next = newNode(0); head.next.next = newNode(1); head.next.next.next = newNode(1); System.out.print("Decimal value is " + decimalValue(head)); }}// This code is contributed by Arnab Kundu |
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!
