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

C++ में स्टैक अनुक्रमों की पुष्टि


मान लीजिए हमारे पास दो अनुक्रम pushed और popped हैं जिनमें विशिष्ट मान हैं। हमें जांचना है कि क्या ये एक प्रारंभिक खाली स्टैक पर पुश और पॉप ऑपरेशन्स के अनुक्रम का परिणाम हो सकते हैं।

उदाहरण: push = [1,2,3,4,5], pop = [4,5,3,2,1] → आउटपुट true।

संचालन: push(1), push(2), push(3), push(4), pop()→4, push(5), pop()→5, pop()→3, pop()→2, pop()→1।

स्टैक सिमुलेशन एल्गोरिदम

  1. एक स्टैक st और इंडेक्स idx = 0 बनाएँ।
  2. pushed सरणी के प्रत्येक तत्व के लिए:
    • तत्व को st में पुश करें।
    • जब तक st खाली नहीं है और st.top() == popped[idx]:
      • st.pop(), idx++।
  3. अंत में, यदि st खाली है तो true लौटाएँ, अन्यथा false।

C++ कार्यान्वयन

#include <bits/stdc++.h>
using namespace std;

class Solution {
public:
    bool validateStackSequences(vector<int>& pushed, vector<int>& popped) {
        stack<int> st;
        int idx = 0;
        for (int x : pushed) {
            st.push(x);
            while (!st.empty() && idx < popped.size() && st.top() == popped[idx]) {
                st.pop();
                idx++;
            }
        }
        return st.empty();
    }
};

int main() {
    vector<int> pushed = {1,2,3,4,5};
    vector<int> popped = {4,5,3,2,1};
    Solution ob;
    cout << ob.validateStackSequences(pushed, popped); // 1 (true)
    return 0;
}

इनपुट

[1,2,3,4,5] [4,5,3,2,1]

आउटपुट

1
  1. C++ STL में स्टैक (3.5) C++ STL में स्टैक (3.5)

    C++ STL में, स्टैक का उपयोग एक कंटेनर के रूप में किया जाता है जिसे LIFO संरचना के रूप में कार्यान्वित किया जाता है। LIFO का अर्थ है लास्ट इन फर्स्ट आउट। स्टैक को किताबों के ढेर के रूप में देखा जा सकता है जिसमें किताबें एक के ऊपर एक व्यवस्थित होती हैं और अंत में डाली गई किताब सबसे पहले हटाई जाएगी इसल

  1. C++ में बाइनरी ट्री नोड्स को वैलिडेट करना C++ में बाइनरी ट्री नोड्स को वैलिडेट करना

    मान लीजिए हमारे पास 0 से n-1 तक नंबरेड n बाइनरी ट्री नोड्स हैं जहां नोड i के दो चिल्ड्रन leftChild[i] और rightChild[i] हैं, हमें true कहना है यदि और केवल यदि सभी दिए गए नोड्स ठीक एक वैलिड बाइनरी ट्री बनाते हैं। जब नोड i का कोई लेफ्ट चाइल्ड नहीं होता तो leftChild[i] -1 के बराबर होगा, इसी तरह राइट चा

  1. - C++ प्रोग्राम: ऐरे का उपयोग करके स्टैक कार्यान्वयन

    ऐरे आधारित स्टैक निश्चित आकार की सरणी और top सूचकांक का उपयोग करके स्टैक कार्यान्वयन। LIFO सिद्धांत का पालन करता है। C++ प्रोग्राम उदाहरण = MAX - 1) cout << Stack Overflow << endl; else { top++; stack[top] = val; } } void pop() { if (top = 0; i--)