इस समस्या में, हमें एक मूल्य, लिंक सूचक और एक मनमाना सूचक के साथ एक लिंक्ड सूची दी जाती है। हमारा काम सबसे बड़ा मान इंगित करने के लिए मनमाना सूचक बिंदु बनाना है जो लिंक की गई सूची में इसके दाईं ओर है।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
यहां, हम लिंक की गई सूची के निम्नलिखित मनमाने संकेत देख सकते हैं, जो लिंक की गई सूची के दाईं ओर सबसे बड़े तत्वों की ओर इशारा करते हैं।
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