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

एक क्रमबद्ध डबल लिंक्ड सूची में ट्रिपल गिनें जिसका उत्पाद सी ++ में दिए गए मान x के बराबर है

पूर्णांक मानों वाली एक क्रमबद्ध डबल लिंक्ड सूची को देखते हुए। लक्ष्य उन त्रिगुणों को खोजना है जिनका गुणनफल दिए गए मान x के बराबर है। यदि इनपुट लिंक्ड सूची 3−4−1−2 है और x 6 है तो गिनती 1 (ट्रिपलेट (3,1,2)) होगी

एक क्रमबद्ध डबल लिंक्ड सूची में ट्रिपल गिनें जिसका उत्पाद सी ++ में दिए गए मान x के बराबर है

उदाहरण के लिए

इनपुट

linked list: [ 200−4−16−5−10−10−2 ] x=200

आउटपुट

Count of triplets in a sorted doubly linked list whose product is equal to a given
value x are: 3

स्पष्टीकरण

Triplets will be:
(4,5,10), (4,5,10) and (10,10,2)

इनपुट

linked list: [ 4−3−1−5−2−4−2] x=12

आउटपुट

Count of triplets in a sorted doubly linked list whose product is equal to a given
value x are: 3

स्पष्टीकरण

Triplets will be:
(4,3,1), (3,1,4) and (3,2,2)

नीचे दिए गए कार्यक्रम में उपयोग किया गया दृष्टिकोण इस प्रकार है -

इस दृष्टिकोण में।

  • हम एक लिंक्ड लिस्ट नोड को स्ट्रक्चर के रूप में ले रहे हैं जिसमें इंट डेटा पार्ट और सेल्फ-रेफरेंशियल नेक्स्ट और पिछले पॉइंटर्स हैं

  • फ़ंक्शन इन्सर्ट_नोड (स्ट्रक्चर ब्लॉक ** हेड, इंट डेटा) डेटा के साथ लिंक की गई सूची के शीर्ष पर नोड जोड़ता है।

  • फ़ंक्शन Product_x(struct block* head, int x) पॉइंटर को डबल लिंक की गई सूची और पूर्णांक x के शीर्ष पर ले जाता है और डेटा भाग के उत्पाद x के रूप में नोड्स के ट्रिपल की गिनती देता है।

  • प्रारंभिक गणना 0 के रूप में लें।

  • स्ट्रक्चर ब्लॉक प्रकार के तीन पॉइंटर्स temp_1, temp_2 और temp_3 लें।

  • temp_1 से शुरू होकर लिंक की गई सूची के शीर्ष की ओर इशारा करते हुए, temp_2, temp_1 के बगल में और temp_3 अगले temp_3 की ओर इशारा करते हुए, हमारे पास पहले तीन नोड्स की ओर इशारा करते हुए तीन पॉइंटर्स हैं।

  • इन पॉइंटर्स का उपयोग करके अंतिम नोड तक ट्रैवर्स करें।

  • यदि उपरोक्त सभी बिंदुओं के वर्तमान डेटा भागों में x के रूप में उत्पाद है। ((temp_1−>data * temp_2−>data * temp_3−>data) ==x) फिर इंक्रीमेंट काउंट।

  • अंत में हमने ट्रिपल की संख्या गिन ली और गिनती में संग्रहीत किया।

  • परिणाम के रूप में वापसी की गिनती।

उदाहरण

#include <iostream>
using namespace std;
struct block{
   int data;
   struct block *next, *prev;
};
void insert_node(struct block** head, int data){
   struct block* ptr = new block();
   ptr−>data = data;
   ptr−>next = NULL;
   ptr−>prev = NULL;
   if ((*head) == NULL){
      (*head) = ptr;
   } else {
      ptr−>next = *head;
      (*head)−>prev = ptr;
      (*head) = ptr;
   }
}
int Product_x(struct block* head, int x){
   int count = 0;
   struct block *temp_1, *temp_2, *temp_3;
   for (temp_1 = head; temp_1!= NULL; temp_1 = temp_1−>next){
      for (temp_2 = temp_1−>next; temp_2 != NULL; temp_2 = temp_2−>next){
         for (temp_3 = temp_2−>next; temp_3!= NULL; temp_3 = temp_3−>next){
            if ((temp_1−>data * temp_2−>data * temp_3−>data) == x){
               count++;
            }
         }
      }
   }
   return count;
}
int main(){
   struct block* head = NULL;
   insert_node(&head, 200);
   insert_node(&head, 100);
   insert_node(&head, 16);
   insert_node(&head, 14);
   insert_node(&head, 10);
   insert_node(&head, 10);
   insert_node(&head, 2);
   int x = 200;
   cout<<"Count of triplets in a sorted doubly linked list whose product is equal to a given value
   x are: "<<Product_x(head, x);
   return 0;
}

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -

Count of triplets in a sorted doubly linked list whose product is equal to a given value x are : 1

  1. एक क्रमबद्ध दोगुनी लिंक की गई सूची में ट्रिपल की गणना करें जिसका योग C++ में दिए गए मान x के बराबर है

    उदाहरण के लिए इनपुट linked list: [ 3−4−13−5−10−10−0 ] x=20 आउटपुट Count of triplets in a sorted doubly linked list whose product is equal to a given value x are: 2 स्पष्टीकरण Triplets will be: ( 3,4,13 ) and ( 10,10,0 ) इनपुट linked list: [ 4−3−1&minu

  1. दो बीएसटी से जोड़े की गणना करें जिनकी राशि सी ++ में दिए गए मान x के बराबर है

    हमें इनपुट के रूप में दो बाइनरी सर्च ट्री और एक वेरिएबल x दिया गया है। लक्ष्य प्रत्येक पेड़ से नोड्स के जोड़े को ढूंढना है ताकि नोड्स के मूल्य का योग x के बराबर हो। BST_1 से नोड 1 और BST_2 से नोड 2 लें और दोनों का डेटा भाग जोड़ें। यदि योग =x. वेतन वृद्धि की संख्या। आइए उदाहरणों से समझते हैं। इनपुट

  1. सी ++ में क्रमबद्ध और घुमाए गए लिंक्ड सूची में घूर्णन की गणना करें

    हमें एक लिंक्ड लिस्ट दी गई है। सूची को पहले क्रमबद्ध किया जाता है और फिर K संख्या के नोड्स द्वारा घुमाया जाता है। लक्ष्य K का मान ज्ञात करना है। यदि हमें इनपुट के रूप में लिंक की गई सूची नीचे दी गई है, जिसे K नोड्स की संख्या द्वारा घुमाया जाता है - तब मूल अवश्य रहा होगा - और हम देख सकते हैं K