একটি সর্টেড ডাবলি লিংকড লিস্ট দেওয়া আছে যাতে ইন্টিজার ভ্যালু আছে। লক্ষ্য হলো যেসব ট্রিপলেটের গুণফল দেওয়া x-এর সমান সেটি বের করা। যদি ইনপুট লিংকড লিস্ট 3-4-1-2 এবং x = 6 হয়, তবে কাউন্ট হবে ১ (ট্রিপলেট (৩,১,২))।

উদাহরণ ১
ইনপুট
linked list: [ 200-4-16-5-10-10-2 ] x=200
আউটপুট
সর্টেড ডাবলি লিংকড লিস্টে গুণফল x হয় এমন ট্রিপলেটের সংখ্যা: 3
ব্যাখ্যা
ট্রিপলেটগুলো: (4,5,10), (4,5,10) এবং (10,10,2)
উদাহরণ ২
ইনপুট
linked list: [ 4-3-1-5-2-4-2] x=12
আউটপুট
সর্টেড ডাবলি লিংকড লিস্টে গুণফল x হয় এমন ট্রিপলেটের সংখ্যা: 3
ব্যাখ্যা
ট্রিপলেটগুলো: (4,3,1), (3,1,4) এবং (3,2,2)
প্রয়োগ করা পদ্ধতি
এই পদ্ধতিতে:
লিংকড লিস্ট নোড হিসেবে
structনেওয়া হয় যাতেint dataপার্ট এবং সেলফ-রেফারেন্সিয়ালnextওpreviousপয়েন্টার থাকে।insert_node(struct block** head, int data)ফাংশনটি হেডে নোড যোগ করে।Product_x(struct block* head, int x)ফাংশনটি ডাবলি লিংকড লিস্টের হেড পয়েন্টার এবং ইন্টিজারxনিয়ে ডাটা পার্টের গুণফলxহয় 그런 ট্রিপলেটের কাউন্ট রিটার্ন করে।আরম্ভিক কাউন্ট ০ রাখুন।
তিনটি পয়েন্টার
temp_1,temp_2এবংtemp_3নিনstruct blockটাইপের।temp_1হেড থেকে,temp_2temp_1-এর নেক্সট,temp_3temp_2-এর নেক্সট থেকে শুরু করুন।এই পয়েন্টারগুলো দিয়ে লাস্ট নোড পর্যন্ত ট্রুভার্স করুন।
যদি বর্তমান তিনটি পয়েন্টারের ডাটা পার্টের গুণফল
xহয় ((temp_1->data * temp_2->data * temp_3->data) == x), তবে কাউন্ট বাড়ান।শেষে ট্রিপলেটের সংখ্যা
count-এ থাকবে।countরিটার্ন করুন ফলাফল হিসেবে।
উদাহরণ কোড
#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 << "সর্টেড ডাবলি লিংকড লিস্টে গুণফল x হয় এমন ট্রিপলেটের সংখ্যা: " << Product_x(head, x);
return 0;
}
আউটপুট
উপরোক্ত কোডটি রান করলে নিচের আউটপুটটি আসবে:
সর্টেড ডাবলি লিংকড লিস্টে গুণফল x হয়那些 ट्रিপলেটের সংখ্যা: 1