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

सी ++ में पोस्टफिक्स रूपांतरण के लिए उपसर्ग

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

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

उदाहरण:+AB.

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

उदाहरण:एबी/

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

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

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

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

केस:अगर सिंबल ऑपरेंड है -> पुश (एलिमेंट) स्टैक में।

केस:यदि प्रतीक ऑपरेटर है -> 2*पॉप(तत्व) स्टैक से। और फिर ऑपरेंड - ऑपरेंड - ऑपरेटर का पुश अनुक्रम।

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

उदाहरण

#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. सी ++ में उदाहरण के साथ अभिव्यक्ति वृक्ष

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

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

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

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

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