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

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

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

एक क्रमबद्ध दोगुनी लिंक की गई सूची में ट्रिपल की गणना करें जिसका योग 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−5−2−4−2 ] x=8

आउटपुट

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

स्पष्टीकरण

Triplets will be:
( 4,3,1), (1,5,2), (3,1,4), (1,5,2), (4,2,2) and (2,4,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 sum_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 = 22;
   cout<<"Count of triplets in a sorted doubly linked list whose sum is equal to a given value x
   are: "<<sum_x(head, x);
   return 0;
}

आउटपुट

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

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

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

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

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

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

  1. सी++ में लिंक्ड सूची के वैकल्पिक नोड्स का योग

    इस समस्या में हमें एक लिंक्ड लिस्ट दी जाती है। हमारा काम लिंक की गई सूची के वैकल्पिक नोड्स के योग को प्रिंट करना है। लिंक्ड सूची डेटा संरचना का एक क्रम है जो लिंक के माध्यम से एक साथ जुड़े होते हैं। अब, समस्या पर वापस आते हैं। यहां, हम लिंक की गई सूची के वैकल्पिक नोड्स जोड़ेंगे। इसका मतलब है कि ह