Advertisement
Arnab_Manna

InfixtoPostfix

Dec 16th, 2022
725
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.06 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<String.h>
  3. #define MAX 100
  4.  
  5. char stack[MAX];
  6. int top = -1;
  7.  
  8. void push(char x)
  9. {
  10.     stack[++top]= x;
  11. }
  12. char pop()
  13. {
  14.     if(top == -1)
  15.         return -1;
  16.     else
  17.     {
  18.         return stack[top--];   
  19.     }  
  20. }
  21.  
  22. int prc(char x)
  23. {
  24.     if(x =='(')
  25.         return 0;  
  26.     else if(x == '^')
  27.         return 3;
  28.     else if(x =='*' || x =='/' || x=='%')
  29.         return 2;
  30.     else if(x =='+' || x =='-')
  31.         return 1;
  32. }
  33.  
  34. int isChar(char x)
  35. {
  36.     if(x>='A' && x<='Z')
  37.         return 1;
  38.     else
  39.         return 0;
  40. }
  41.  
  42. int main()
  43. {
  44.     char exp[MAX];
  45.     char *ptr,data;
  46.     int i;
  47.  
  48.     printf("\n Enter Exp. =");
  49.     scanf("%s",exp);
  50.     ptr=exp;
  51.     while(*ptr!='\0')
  52.     {
  53.         if(isChar(*ptr)==1)
  54.             printf("%c",*ptr);
  55.         else if(*ptr=='(')
  56.             push(*ptr);
  57.         else if(*ptr==')')
  58.         {
  59.             while(1)
  60.                 {
  61.                     data = pop();
  62.                     if(data == '(' )
  63.                         break; 
  64.                     printf("%c",data);
  65.                 }
  66.         }
  67.         else
  68.         {
  69.             while(prc(stack[top]) >= prc(*ptr))
  70.             {
  71.                 data = pop();
  72.                 printf("%c",data);
  73.             }
  74.             push(*ptr);
  75.         }  
  76.         ptr++; 
  77.     }
  78.     while(top!= -1)
  79.     {
  80.         data = pop();
  81.         printf("%c",data); 
  82.     }
  83.     return 0;
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement