মান लीजिए हमारे पास एक अचल लिंक्ड लिस्ट है, हमें निम्नलिखित इंटरफेस की मदद से प्रत्येक नोड के सभी मानों को रिवर्स ऑर्डर में प्रिंट करना है -
- 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]