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

C++ में प्रीफिक्स से पोस्टफिक्स रूपांतरण


इस समस्या में, हमें एक प्रीफिक्स एक्सप्रेशन दिया गया है। हमारा कार्य दिए गए एक्सप्रेशन का पोस्टफिक्स रूपांतरण प्रिंट करना है।

प्रीफिक्स एक्सप्रेशन वे एक्सप्रेशन हैं जिनमें ऑपरेटर ऑपरेंड्स से पहले होते हैं।

उदाहरण: +AB.

पोस्टफिक्स एक्सप्रेशन वे एक्सप्रेशन हैं जिनमें ऑपरेटर एक्सप्रेशन में ऑपरेंड्स के बाद होते हैं।

उदाहरण: AB/

प्रीफिक्स से पोस्टफिक्स रूपांतरण में इन्फिक्स में रूपांतरण शामिल नहीं होना चाहिए।

समस्या को समझने के लिए एक उदाहरण लेते हैं,

Input: /+XY+NM Output: XY+NM+/ Explanation: infix -> (X+Y)/(N+M)

इस समस्या को हल करने के लिए, हम पहले पूरे पोस्टफिक्स एक्सप्रेशन को रिवर्स ऑर्डर में पार करेंगे। और हम अपने प्रोसेसिंग के लिए स्टैक डेटा संरचना का उपयोग करेंगे। और पार करने पर मिले एलिमेंट्स के मामलों के लिए निम्नलिखित करें

केस: यदि सिंबल ऑपरेंड है -> push(element) स्टैक में।

केस: यदि सिंबल ऑपरेटर है -> 2*pop(element) स्टैक से। और फिर ऑपरेंड - ऑपरेंड - ऑपरेटर के क्रम में पुश करें।

हमारे एल्गोरिदम के कार्यान्वयन को दिखाने वाला प्रोग्राम

उदाहरण

#include <iostream> #include <stack> using namespace std; bool isOperator(char x) {    switch (x) {       case '+':       case '-':       case '/':       case '*':       return true;    }    return false; } string convertToPostfix(string prefix) {    stack<string> expression;    int length = prefix.size();    for (int i = length - 1; i >= 0; i--) {       if (isOperator(prefix[i])) {          string op1 = expression.top();          expression.pop();          string op2 = expression.top();          expression.pop();          string temp = op1 + op2 + prefix[i];          expression.push(temp);       }       else          expression.push(string(1, prefix[i]));    }    return expression.top(); } int main() {    string prefix = "*-AB/+CD*XY";    cout<<"Prefix expression : "<<prefix<<endl;    cout<<"Postfix expression : "<<convertToPostfix(prefix);    return 0; }

आउटपुट

Prefix expression : *-AB/+CD*XY Postfix expression : AB-CD+XY*/*

  1. C++ में उदाहरण के साथ एक्सप्रेशन ट्री C++ में उदाहरण के साथ एक्सप्रेशन ट्री

    एक एक्सप्रेशन ट्री एक विशेष प्रकार का बाइनरी ट्री है जिसमें ट्री का प्रत्येक नोड या तो एक ऑपरेटर या ऑपरेंड से बना होता है। लीफ नोड्स ट्री के एक ऑपरेंड को दर्शाते हैं। नॉन-लीफ नोड्स ट्री के एक ऑपरेटर को दर्शाते हैं। उदाहरण: इनफिक्स एक्सप्रेशन प्राप्त करने के लिए जिसे आसानी से हल किया जा सकता है, हम

  1. C++ में एक्सप्रेशन ट्री का मूल्यांकन C++ में एक्सप्रेशन ट्री का मूल्यांकन

    इस समस्या में, हमें एक एक्सप्रेशन ट्री दिया गया है जिसमें +, -, /, * जैसे बाइनरी ऑपरेशन होते हैं। हमें इस एक्सप्रेशन ट्री का मूल्यांकन करके परिणाम वापस करना होता है। एक्सप्रेशन ट्री क्या है? एक्सप्रेशन ट्री एक विशेष प्रकार का बाइनरी ट्री है जिसमें प्रत्येक नोड या तो एक ऑपरेटर होता है या एक ऑपरेंड,

  1. C++ में बाइनरी ट्री को बाइनरी सर्च ट्री में रूपांतरण C++ में बाइनरी ट्री को बाइनरी सर्च ट्री में रूपांतरण

    एक बाइनरी ट्री एक विशेष प्रकार का ट्री है जिसमें ट्री का प्रत्येक नोड अधिकतम दो चाइल्ड नोड रख सकता है। इन चाइल्ड नोड्स को राइट चाइल्ड और लेफ्ट चाइल्ड के नाम से जाना जाता है। एक साधारण बाइनरी ट्री है - बाइनरी सर्च ट्री (BST) एक विशेष प्रकार का ट्री है जो निम्नलिखित नियमों का पालन करता है - बाएं चाइ