এই সমস্যাতে, একটি প্রিফিক্স এক্সপ্রেশন দেওয়া থাকে। এর পোস্টফিক্স রূপান্তর প্রিন্ট করতে হবে। ইনফিক্সের মাধ্যমে না করে সরাসরি কনভার্ট করুন।
সংজ্ঞা
- প্রিফিক্স: অপারেটর অপারেন্ডের আগে। উদাহরণ:
+AB - পোস্টফিক্স: অপারেটর অপারেন্ডের পরে। উদাহরণ:
AB+
স্ট্যাক ভিত্তিক অ্যালগরিদম
- প্রিফিক্স এক্সপ্রেশনটি রিভার্স অর্ডারে ট্রাভার্স করুন
- অপারেন্ড হলে → স্ট্যাকে পুশ করুন
- অপারেটর হলে → স্ট্যাকে থেকে ২টি পপ করুন,
op1 + op2 + operatorফরম্যাটে স্ট্রিং বানিয়ে পুশ করুন - শেষে স্ট্যাকে টপে পোস্টফিক্স এক্সপ্রেশন পাবেন
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*/*