Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

एक लिंक की गई सूची में बाइनरी नंबर को C++ में पूर्णांक में बदलें

मान लीजिए कि हमारे पास एक 'हेड' है जो एक एकल-लिंक्ड सूची का संदर्भ नोड है। लिंक की गई सूची में मौजूद प्रत्येक नोड का मान 0 या 1 है। यह लिंक्ड सूची किसी संख्या के बाइनरी प्रतिनिधित्व को संग्रहीत करती है। हमें लिंक की गई सूची में मौजूद संख्या का दशमलव मान वापस करना होगा। तो अगर सूची [1,0,1,1,0,1]

. की तरह है

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • x :=सूची तत्वों को एक सरणी में बदलें

  • फिर सूची को उलट दें x

  • उत्तर:=0, और अस्थायी:=1

  • i के लिए i रेंज में :=0, x – 1 के आकार तक

    • उत्तर:=उत्तर + x[i] * अस्थायी

    • अस्थायी:=अस्थायी * 2

  • वापसी उत्तर

उदाहरण (C++)

आइए एक बेहतर समझ प्राप्त करने के लिए निम्नलिखित कार्यान्वयन देखें -

#include <bits/stdc++.h>
using namespace std;
class ListNode{
   public:
      int val;
      ListNode *next;
      ListNode(int data){
         val = data;
         next = NULL;
      }
};
ListNode *make_list(vector<int> v){
   ListNode *head = new ListNode(v[0]);
   for(int i = 1; i<v.size(); i++){
      ListNode *ptr = head;
      while(ptr->next != NULL){
         ptr = ptr->next;
      }
      ptr->next = new ListNode(v[i]);
   }
   return head;
}
class Solution {
public:
   vector <int> getVector(ListNode* node){
      vector <int> result;
      while(node){
         result.push_back(node->val);
         node = node->next;
      }
      return result;
   }
   int getDecimalValue(ListNode* head) {
      vector <int> x = getVector(head);
      reverse(x.begin(), x.end());
      int ans = 0;
      int temp = 1;
      for(int i = 0; i < x.size(); i++){
         ans += x[i] * temp;
         temp *= 2;
      }
      return ans;
   }
};
main(){
   Solution ob;
   vector<int> v = {1,0,1,1,0,1};
   ListNode *head = make_list(v);
   cout << ob.getDecimalValue(head);
}

इनपुट

[1,0,1,1,0,1]

आउटपुट

45

  1. सी ++ में क्रमबद्ध सूची को बाइनरी सर्च ट्री में कनवर्ट करें

    मान लीजिए कि हमारे पास एक एकल लिंक की गई सूची है जहां तत्वों को आरोही क्रम में क्रमबद्ध किया गया है, हमें इसे ऊंचाई संतुलित बीएसटी में बदलना होगा। तो अगर सूची [-10, -3, 0, 5, 9] की तरह है, तो संभावित पेड़ इस तरह होगा - इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - यदि सूची खाली है, तो शून्य

  1. C++ में बाइनरी ट्री में लिंक की गई सूची

    मान लीजिए कि हमारे पास एक बाइनरी ट्री रूट है और पहले नोड के रूप में एक सिर के साथ एक लिंक्ड सूची है। हमें ट्रू वापस करना होगा यदि लिंक की गई सूची में सिर से शुरू होने वाले सभी तत्व बाइनरी ट्री में जुड़े कुछ डाउनवर्ड पथ से मेल खाते हैं अन्यथा गलत। तो अगर पेड़ जैसा है - और लिंक की गई सूची [1,4,2,6]

  1. C++ में बाइनरी ट्री को लिंक्ड लिस्ट में समतल करें

    मान लीजिए हमारे पास एक बाइनरी ट्री है; हमें इसे जगह में लिंक्ड सूची में समतल करना होगा। तो अगर पेड़ जैसा है - आउटपुट ट्री होगा - इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - सेवा पिछला:=शून्य एक पुनरावर्ती फ़ंक्शन हल () को परिभाषित करें, जो इनपुट के रूप में रूट लेगा। यदि रूट