मान लीजिए हमारे पास एक इम्यूटेबल (अपरिवर्तनीय) लिंक्ड लिस्ट है, हमें प्रत्येक नोड के सभी मानों को रिवर्स ऑर्डर में प्रिंट करना है, इसके लिए निम्न इंटरफेस का उपयोग करना होगा:
ImmutableListNode - यह एक इम्यूटेबल लिंक्ड लिस्ट का इंटरफेस है, हमें लिस्ट का हेड दिया जाता है।
लिंक्ड लिस्ट को एक्सेस करने के लिए हमें निम्न फंक्शन्स का उपयोग करना होगा:
ImmutableListNode.printValue() - यह करंट नोड का मान प्रिंट करेगा।
ImmutableListNode.getNext() - यह अगला नोड लौटाएगा।
तो अगर लिस्ट है: [0, -4, -1, 3, -5], तो आउटपुट होगा [-5, 3, -1, -4, 0]
इसे हल करने के लिए, हम इन स्टेप्स को फॉलो करेंगे:
ImmutableListNode टाइप के नोड्स के लिए एक स्टैक
stडिफाइन करेंजब तक हेड नल नहीं है:
हेड को
stमें इंसर्ट करेंहेड := हेड का नेक्स्ट
जब तक
stखाली नहीं है:स्टैक के टॉप नोड का मान प्रिंट करें
स्टैक से नोड डिलीट करें
उदाहरण (C++)
बेहतर समझ के लिए निम्न इम्प्लीमेंटेशन देखें:
class Solution {
public:
void printLinkedListInReverse(ImmutableListNode* head) {
stack <ImmutableListNode*> st;
while(head){
st.push(head);
head = head->getNext();
}
while(!st.empty()){
st.top()->printValue();
st.pop();
}
}
};
इनपुट
[0,-4,-1,3,-5]
आउटपुट
[-5,3,-1,-4,0]