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

उदाहरण के लिए
इनपुट
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