এই সমস্যায়, আমাদের একটি মান, লিঙ্ক পয়েন্টার এবং একটি নির্বিচারে পয়েন্টার সহ একটি লিঙ্কযুক্ত তালিকা দেওয়া হয়েছে। আমাদের কাজ হল নির্বিচারে পয়েন্টার পয়েন্ট করা যাতে লিঙ্ক করা তালিকার ডানদিকে থাকা সবচেয়ে বড় মানটিকে নির্দেশ করা হয়।
সমস্যাটি বোঝার জন্য একটি উদাহরণ দেওয়া যাক,
এখানে, আমরা লিঙ্ক করা তালিকার নিম্নোক্ত নির্বিচারে পয়েন্টারগুলি দেখতে পাচ্ছি, যা লিঙ্ক করা তালিকার ডান দিকের সবচেয়ে বড় উপাদানগুলিকে নির্দেশ করে৷
12 -> 76, 76 -> 54, 54 -> 8, 8 -> 41
এই সমস্যাটি সমাধান করার জন্য, আমাদের একটি নোডের ডানদিকে সবচেয়ে বড় উপাদানটি খুঁজে বের করতে হবে। এর জন্য আমরা লিঙ্ক করা তালিকাটিকে বিপরীত দিকে ট্র্যাভার্সাল করব এবং সমস্ত সেরা উপাদানগুলি খুঁজে বের করতে শুরু করব এবং তারপরে প্রতিটি নোডে আমাদের রক্ষণাবেক্ষণ করা সবচেয়ে বড় নোডের নির্বিচারে পয়েন্ট তৈরি করবে৷
উদাহরণ
আমাদের সমাধানের বাস্তবায়ন দেখানোর জন্য প্রোগ্রাম,
#include<bits/stdc++.h> using namespace std; struct Node{ int data; Node* next, *arbitrary; }; Node* reverseList(Node *head){ Node *prev = NULL, *current = head, *next; while (current != NULL){ next = current->next; current->next = prev; prev = current; current = next; } return prev; } Node* populateArbitraray(Node *head){ head = reverseList(head); Node *max = head; Node *temp = head->next; while (temp != NULL){ temp->arbitrary = max; if (max->data < temp->data) max = temp; temp = temp->next; } return reverseList(head); } Node *insertNode(int data) { Node *new_node = new Node; new_node->data = data; new_node->next = NULL; return new_node; } int main() { Node *head = insertNode(12); head->next = insertNode(76); head->next->next = insertNode(54); head->next->next->next = insertNode(8); head->next->next->next->next = insertNode(41); head = populateArbitraray(head); printf("Linked List with Arbitrary Pointer: \n"); while (head!=NULL){ cout<<head->data<<"->"; if (head->next) cout<<head->next->data; else cout<<"NULL"; cout<<": "<<head->data<<"->"; if (head->arbitrary) cout<<head->arbitrary->data; else cout<<"NULL"; cout << endl; head = head->next; } return 0; }
আউটপুট
Linked List with Arbitrary Pointer: 12->76: 12->76 76->54: 76->54 54->8: 54->41 8->41: 8->41 41->NULL: 41->NULL