Infix –> Postfix

Input: A-B*(C+D)/E

Output:ABCD+*E/-

#include <iostream>
#include <cstdlib>
#include <string.h>
#include <stack>

using namespace std;

int priority(char op);

int main()
{
    char ar[80];
    stack<char> s_1;
    cin >> ar;

    int length = strlen(ar);
    s_1.push('');

    for(int i = 0; i < length; i++)
    {
        switch(ar[i])
        {
            case '(':
                s_1.push(ar[i]);
                break;
            case ')':
            {
                 while(s_1.top() != '(')
                 {
                     cout << s_1.top();
                     s_1.pop();
                 }
                 s_1.pop();
                 break;
            }
            case '+':  case '-':  case '*': case '/':
            {
                while(priority(s_1.top()) >= priority(ar[i]))
                {
                    cout << s_1.top();
                    s_1.pop();
                }
                s_1.push(ar[i]);
                break;
            }
            default:
            {
                cout << ar[i];
                break;
            }
        }
    }
    while(!s_1.empty())
    {
        cout << s_1.top();
        s_1.pop();
    }
    cout << endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}

int priority(char op)
{
    int p;
    switch (op)
    {
        case '+' :
        case '-' :
             p = 1;
             break;
        case '*' :
        case '/' :
             p = 2;
             break;
        default:
             p = 0;
             break;
    }
    return p;

}

One Response

  1. innocent teen blowjob
    empty stocking fund knoxville

Leave a Reply