📜  二元链表的十进制等价物

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

二元链表的十进制等价物

给定一个由 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 */
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
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 cod
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


输出 :

Decimal value is 11



如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程学生竞争性编程现场课程