इस समस्या में, हमें एक लिंक्ड लिस्ट दी गई है जिसमें एक मान, लिंक पॉइंटर और एक मनमाना पॉइंटर है। हमारा कार्य मनमाना पॉइंटर को लिंक्ड लिस्ट में उसके दाईं ओर के सबसे बड़े मान की ओर इंगित करना है।
समस्या को समझने के लिए एक उदाहरण लेते हैं,

यहां, हम लिंक्ड लिस्ट के निम्नलिखित मनमाना पॉइंटर्स देख सकते हैं, जो लिंक्ड लिस्ट के दाईं ओर के सबसे बड़े तत्वों की ओर इंगित करते हैं।
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("मनमाना पॉइंटर के साथ लिंक्ड लिस्ट: \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;
}
आउटपुट
मनमाना पॉइंटर के साथ लिंक्ड लिस्ट: 12->76: 12->76 76->54: 76->54 54->8: 54->41 8->41: 8->41 41->NULL: 41->NULL