কম্পিউটার টিউটোরিয়াল

C++-এ প্রিফিক্স এক্সপ্রেশন থেকে পোস্টফিক্স কনভার্সন (Prefix to Postfix Conversion)

এই সমস্যাতে, একটি প্রিফিক্স এক্সপ্রেশন দেওয়া থাকে। এর পোস্টফিক্স রূপান্তর প্রিন্ট করতে হবে। ইনফিক্সের মাধ্যমে না করে সরাসরি কনভার্ট করুন।

সংজ্ঞা

  • প্রিফিক্স: অপারেটর অপারেন্ডের আগে। উদাহরণ: +AB
  • পোস্টফিক্স: অপারেটর অপারেন্ডের পরে। উদাহরণ: AB+

স্ট্যাক ভিত্তিক অ্যালগরিদম

  1. প্রিফিক্স এক্সপ্রেশনটি রিভার্স অর্ডারে ট্রাভার্স করুন
  2. অপারেন্ড হলে → স্ট্যাকে পুশ করুন
  3. অপারেটর হলে → স্ট্যাকে থেকে ২টি পপ করুন, op1 + op2 + operator ফরম্যাটে স্ট্রিং বানিয়ে পুশ করুন
  4. শেষে স্ট্যাকে টপে পোস্টফিক্স এক্সপ্রেশন পাবেন

C++ প্রোগ্রাম উদাহরণ

#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. সি/সি++-তে পোস্টফিক্স ++ এবং প্রিফিক্স ++ প্রেসিডেন্স (Precedence)

  2. C++-এ এক্সপ্রেশন ট্রি (Expression Tree) উদাহরণসহ

  3. সি++-এ এক্সপ্রেশন ট্রি মূল্যায়ন

  4. C++-এ বাইনারি ট্রি থেকে বাইনারি সার্চ ট্রি (BST) কনভার্ট করুন