Decimal Equivalent of Binary Linked List
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++
// C++ Program to find decimal value of // binary linked list #include <bits/stdc++.h> using namespace std; /* Link list Node */ class Node { public : bool data; Node* next; }; /* Returns decimal value of binary linked list */ 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; // Move next head = head->next; } return res; } // Utility function to create a new node. Node *newNode( bool data) { Node *temp = new Node; temp->data = data; temp->next = NULL; return temp; } /* Driver program to test above function*/ int main() { /* Start with the empty list */ 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; } // This is code is contributed by rathbhupendra |
C
// C Program to find decimal value of // binary linked list #include<iostream> 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 program to test above function*/ 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; } |
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 list / static 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 code/ public 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 |
Python3
# Python3 program to find decimal value # of binary linked list # Node Class class Node: # Function to initialise the # node object def __init__( self , data): # Assign data self .data = data # Initialize next as null self . next = None # Linked List class contains # a Node object class LinkedList: # Function to initialize head def __init__( self ): self .head = None # Returns decimal value of binary # linked list def decimalValue( self , head): # Initialized result res = 0 # Traverse linked list while head: # Multiply result by 2 and # add head's data res = (res << 1 ) + head.data # Move Next head = head. next return res # Driver code if __name__ = = '__main__' : #Start with the empty list llist = LinkedList() llist.head = Node( 1 ) llist.head. next = Node( 0 ) llist.head. next . next = Node( 1 ) llist.head. next . next . next = Node( 1 ) print ( "Decimal Value is {}" . format ( llist.decimalValue(llist.head))) # This code is contributed by Mohit Jangra |
C#
// C# Program to find decimal value of // binary linked list using System; class GFG { // Link list Node / public class Node { public Boolean data; public Node next; }; // Returns decimal value of binary linked list static 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 code public 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); Console.WriteLine( "Decimal value is " + decimalValue(head)); } } // This code is contributed by Rajput-Ji |
Javascript
<script> // Javascript Program to find decimal value of // binary linked list // Link list Node / class Node { constructor(){ this .data = true ; this .next = null ; } } // Returns decimal value of binary linked list / function decimalValue(head) { // Initialized result var 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. function newNode(data) { var temp = new Node(); temp.data = (data == 1 ? true : false ); temp.next = null ; return temp; } // Driver code/ // Start with the empty list / var head = newNode(1); head.next = newNode(0); head.next.next = newNode(1); head.next.next.next = newNode(1); document.write( "Decimal value is " + decimalValue(head)); // This code contributed by aashish1995 </script> |
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.
This article is contributed by Shivam Gupta. If you like GeeksforGeeks and would like to contribute, you can also write an article and mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Login to comment...