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

C++ प्रोग्राम: स्टैक का उपयोग करके बैलेंस्ड पैरेंथेसिस की जांच करना


यहां हम चर्चा करेंगे कि स्टैक का उपयोग करके बैलेंस्ड ब्रैकेट्स की जांच कैसे करें। हम न केवल ओपनिंग और क्लोजिंग ब्रैकेट्स की जांच करते हैं बल्कि ब्रैकेट्स के क्रम की भी जांच करते हैं। उदाहरण के लिए, हम कह सकते हैं कि एक्सप्रेशन "[{} () {()}]" सही है, लेकिन "{[}]" सही नहीं है।

इनपुट: ब्रैकेट्स के साथ एक्सप्रेशन "{()}[]"
आउटपुट: वे बैलेंस्ड हैं

एल्गोरिदम

चरण 1: ब्रैकेट्स रखने के लिए एक स्टैक परिभाषित करें
चरण 2: एक्सप्रेशन को बाएं से दाएं ट्रैवर्स करें
चरण 2.1: यदि कैरेक्टर ओपनिंग ब्रैकेट (, या { या [ है, तो इसे स्टैक में पुश करें
चरण 2.2: यदि कैरेक्टर क्लोजिंग ब्रैकेट ), } या ] है
    तो स्टैक से पॉप करें, और यदि पॉप किया गया कैरेक्टर शुरुआती ब्रैकेट से मेल खाता है तो यह ठीक है। अन्यथा वे बैलेंस्ड नहीं हैं।
चरण 3: ट्रैवर्सल के बाद यदि स्टैक में शुरुआती ब्रैकेट मौजूद है तो यह बैलेंस्ड नहीं है।

उदाहरण कोड

#include <iostream>
#include <stack>
using namespace std;

bool isBalanced(string expr) {
    stack s;
    char ch;
    
    for (int i = 0; i < expr.length(); i++) {
        // एक्सप्रेशन में प्रत्येक कैरेक्टर के लिए, शर्तों की जांच करें
        if (expr[i] == '(' || expr[i] == '[' || expr[i] == '{') {
            // जब यह ओपनिंग ब्रैकेट हो, स्टैक में पुश करें
            s.push(expr[i]);
            continue;
        }
        
        if (s.empty())
            // स्टैक खाली नहीं हो सकता क्योंकि यह ओपनिंग ब्रैकेट नहीं है, क्लोजिंग ब्रैकेट होना चाहिए
            return false;
        
        switch (expr[i]) {
            case ')': // क्लोजिंग पैरेंथेसिस के लिए, पॉप करें और ब्रेसेस और स्क्वायर ब्रैकेट्स की जांच करें
                ch = s.top();
                s.pop();
                if (ch == '{' || ch == '[')
                    return false;
                break;
            case '}': // क्लोजिंग ब्रेसेस के लिए, पॉप करें और पैरेंथेसिस और स्क्वायर ब्रैकेट्स की जांच करें
                ch = s.top();
                s.pop();
                if (ch == '(' || ch == '[')
                    return false;
                break;
            case ']': // क्लोजिंग स्क्वायर ब्रैकेट के लिए, पॉप करें और ब्रेसेस और पैरेंथेसिस की जांच करें
                ch = s.top();
                s.pop();
                if (ch == '(' || ch == '{')
                    return false;
                break;
        }
    }
    return (s.empty()); // जब स्टैक खाली हो, true लौटाएं
}

main() {
    string expr = "[{}(){()}]";
    if (isBalanced(expr))
        cout << "Balanced";
    else
        cout << "Not Balanced";
}

आउटपुट

Balanced

  1. C++ में STL का उपयोग करके जांचें कि क्या सरणी पैलिंड्रोम है या नहीं C++ में STL का उपयोग करके जांचें कि क्या सरणी पैलिंड्रोम है या नहीं

    n पूर्णांकों की एक सरणी arr[n] दी गई है, कार्य यह जांचना है कि क्या सरणी एक पैलिंड्रोम है या नहीं। हमें C++ में STL (स्टैंडर्ड टेम्पलेट लाइब्रेरी) का उपयोग करके यह कार्य करना है। C++ में STL (Standard Template Library) की एक विशेषता है, यह C++ टेम्पलेट कक्षाओं का एक समूह है जिसका उपयोग डेटा संरचना

  1. C++ में सरणी की बिटोनिसिटी की जांच करें C++ में सरणी की बिटोनिसिटी की जांच करें

    N पूर्णांकों की एक सरणी arr[N] दी गई है, कार्य यह जांचना है कि दी गई सरणी बिटोनिक है या नहीं। यदि दी गई सरणी बिटोनिक है तो हां यह एक बिटोनिक सरणी है प्रिंट करें, अन्यथा नहीं यह बिटोनिक सरणी नहीं है प्रिंट करें। एक बिटोनिक सरणी वह है जब सरणी पहले सख्ती से बढ़ते क्रम में होती है और फिर सख्ती से घटते

  1. C++ प्रोग्राम बाईसेक्शन मेथड के लिए C++ प्रोग्राम बाईसेक्शन मेथड के लिए

    फंक्शन f(x) दिया गया है जिसमें संख्या a और b हैं जहां, f(a) * f(b) > 0 और फंक्शन f(x) a और b के बीच होना चाहिए यानी f(x) = [a, b]। कार्य बाईसेक्शन मेथड का उपयोग करके फंक्शन f(x) में अंतराल a और b के बीच स्थित रूट का मान खोजना है।बाईसेक्शन मेथड क्या है?बाईसेक्शन मेथड का उपयोग फंक्शन f(x) में दिए ग