पूर्णांक मानों वाली एक क्रमबद्ध डबल लिंक्ड सूची को देखते हुए। लक्ष्य उन त्रिगुणों को खोजना है जिनका गुणनफल दिए गए मान 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