SabirSazzad

Infix to Postfix

Feb 26th, 2017
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.61 KB | None | 0 0
  1. #include<iostream>
  2. #include<cstring>
  3. #include<stack>
  4. #include<stdio.h>
  5. using namespace std;
  6.  
  7. int getPrecidence(char ch)
  8. {
  9.     switch(ch)
  10.     {
  11.         case '/':
  12.         case '*': return 2;
  13.         case '+':
  14.         case '-': return 1;
  15.         default : return 0;
  16.     }
  17.  
  18. }
  19. int main()
  20. {
  21.     char infix[100];
  22.     gets(infix);
  23.     int size = strlen(infix);
  24.     char ch,postfix[size];
  25.     int i=0,j=0,precedence=0;
  26.     stack<char> myStack;
  27.  
  28.     while(i<size)
  29.     {
  30.         ch = infix[i];
  31.         if(ch == '(')
  32.         {
  33.             myStack.push(ch);
  34.             i++;
  35.             continue;
  36.         }
  37.         if(ch == ')')
  38.         {
  39.             while(!myStack.empty() && myStack.top() != '(')
  40.             {
  41.                 postfix[j++] = myStack.top();
  42.                 myStack.pop();
  43.             }
  44.             if(!myStack.empty())
  45.             {
  46.                 myStack.pop();
  47.             }
  48.             i++;
  49.             continue;
  50.         }
  51.         precedence = getPrecidence(ch);
  52.         if(precedence == 0)
  53.         {
  54.             postfix[j++] = ch;
  55.         }
  56.         else
  57.         {
  58.             while(!myStack.empty() && myStack.top() != '(' && precedence <= getPrecidence(myStack.top()) )
  59.             {
  60.                 postfix[j++] = myStack.top();
  61.                 myStack.pop();
  62.  
  63.             }
  64.             myStack.push(ch);
  65.         }
  66.         i++;
  67.     }
  68.     while(!myStack.empty())
  69.     {
  70.         postfix[j++] = myStack.top();
  71.         myStack.pop();
  72.     }
  73.     cout << "Postfix conversion is...." <<endl;
  74.     for(i=0; i<size; i++)
  75.     {
  76.         cout << postfix[i];
  77.     }
  78.  
  79. }
Advertisement
Add Comment
Please, Sign In to add comment