विचार करें कि हमारे पास कोष्ठक के साथ एक व्यंजक है। यदि एक प्रारंभिक कोष्ठक का सूचकांक दिया गया है, तो हमें उसका अंतिम अंत कोष्ठक ज्ञात करना होगा। तो अगर व्यंजक इस तरह है:(25*6+(88-32+(50/10)+20)), और ओपनिंग ब्रैकेट का इंडेक्स 6 है, तो क्लोजिंग ब्रैकेट 23 की स्थिति में होगा।
यहां हम इस समस्या को हल करने के लिए स्टैक डेटा-स्ट्रक्चर का उपयोग करेंगे। हम दिए गए इंडेक्स से एक्सप्रेशन को पार करेंगे, और ओपनिंग ब्रैकेट्स को पुश करना शुरू करेंगे, जब क्लोजिंग ब्रैकेट मिल जाता है, तो स्टैक से पॉप एलिमेंट, जब स्टैक खाली होता है, तो इंडेक्स वापस कर देते हैं।
उदाहरण
#include<iostream> #include<stack> using namespace std; void getEndingBracketIndex(string exp, int index){ int i; if(exp[index]!='('){ cout << exp << "Closing bracket of parentheses started at " << index << " present at index -1\n"; return; } stack <int> stk; for(i = index; i < exp.length(); i++){ if(exp[i] == '(') stk.push(exp[i]); else if(exp[i] == ')'){ stk.pop(); if(stk.empty()){ cout << exp << ", Closing bracket of parentheses started at " << index << " present at index " << i << ""; return; } } } cout << exp << ", Closing bracket of parentheses started at " << index << " present at index -1"; } int main() { getEndingBracketIndex("(25*6+(88-32+(50/10)+20))", 6); }
आउटपुट
(25*6+(88-32+(50/10)+20)), Closing bracket of parentheses started at 6 present at index 23