Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में इम्यूटेबल लिंक्ड लिस्ट को रिवर्स में प्रिंट करना


मान लीजिए हमारे पास एक इम्यूटेबल (अपरिवर्तनीय) लिंक्ड लिस्ट है, हमें प्रत्येक नोड के सभी मानों को रिवर्स ऑर्डर में प्रिंट करना है, इसके लिए निम्न इंटरफेस का उपयोग करना होगा:

  • 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]

  1. C प्रोग्राम में अतिरिक्त स्पेस और संशोधन के बिना लिंक्ड लिस्ट का रिवर्स प्रिंट करें C प्रोग्राम में अतिरिक्त स्पेस और संशोधन के बिना लिंक्ड लिस्ट का रिवर्स प्रिंट करें

    समस्या विवरण कार्य लिंक्ड लिस्ट के अंत से शुरू होने वाले नोड्स को प्रिंट करना है बिना अतिरिक्त स्पेस का उपयोग किए, जिसका अर्थ है कि कोई अतिरिक्त वेरिएबल नहीं होना चाहिए, इसके बजाय हेड पॉइंटर जो पहले नोड को इंगित करता है, को स्थानांतरित किया जाएगा। उदाहरण इनपुट: 10 21 33 42 89 आउटपुट: 89 42 33 21 1

  1. C++ में लिंक्ड सूची के वैकल्पिक नोड्स का योग C++ में लिंक्ड सूची के वैकल्पिक नोड्स का योग

    इस समस्या में, हमें एक लिंक्ड सूची दी गई है। हमारा कार्य लिंक्ड सूची के वैकल्पिक नोड्स का योग प्रिंट करना है। लिंक्ड सूची डेटा संरचनाओं का एक क्रम है जो लिंक्स के माध्यम से एक साथ जुड़े हुए हैं। अब, आइए समस्या पर वापस आते हैं। यहां, हम लिंक्ड सूची के वैकल्पिक नोड्स को जोड़ेंगे। इसका मतलब है हम

  1. C++ में पुनरावृत्ति का उपयोग करके लिंक्ड लिस्ट के वैकल्पिक नोड्स प्रिंट करें C++ में पुनरावृत्ति का उपयोग करके लिंक्ड लिस्ट के वैकल्पिक नोड्स प्रिंट करें

    लिंक्ड लिस्ट एक रैखिक डेटा संरचना है जो तत्वों को गैर-सन्निहित मेमोरी स्थानों में संग्रहीत करती है। प्रत्येक तत्व में लिंक्ड लिस्ट के अगले तत्व का एक पॉइंटर होता है। उदाहरण - इस समस्या में, हमें एक लिंक्ड लिस्ट दी गई है और हमें इस लिंक्ड लिस्ट के तत्वों को प्रिंट करना है लेकिन केवल वैकल्पिक तत्वों