sandeshMC

infix to postfix

Aug 1st, 2013
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.34 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<string.h>
  3. #define MAX 20
  4. char stack[MAX];
  5. int top=-1;
  6. char pop();
  7. void push(char item);
  8. int prcd(char symbol)
  9. {
  10. switch(symbol)
  11. {
  12. case '+':
  13. case '-':return 2;
  14. break;
  15. case '*':
  16. case '/':return 4;
  17. break;
  18. case '^':
  19. return 6;
  20. break;
  21. case '(':
  22. case ')':
  23. case '#':return 1;
  24. break;
  25. }
  26. }
  27. int isoperator(char symbol)
  28. {
  29. switch(symbol)
  30. {
  31. case '+':
  32. case '-':
  33. case '*':
  34. case '/':
  35. case '^':
  36. case '(':
  37. case ')':return 1;
  38. break;
  39. default:return 0;
  40. }
  41. }
  42. void convertip(char infix[],char postfix[])
  43. {
  44. int i,symbol,j=0;
  45. stack[++top]='#';
  46. for(i=0;i<strlen(infix);i++)
  47. {
  48. symbol=infix[i];
  49. if(isoperator(symbol)==0)
  50. {
  51. postfix[j]=symbol;
  52. j++;
  53. }
  54. else{
  55. if(symbol=='(')push(symbol);
  56. else if(symbol==')')
  57. {
  58. while(stack[top]!='(')
  59. {
  60. postfix[j]=pop();
  61. j++;
  62. }
  63. pop();
  64. }
  65. else{
  66. if(prcd(symbol)>prcd(stack[top]))
  67. push(symbol);
  68. else{
  69. while(prcd(symbol)<=prcd(stack[top]))
  70. {
  71. postfix[j]=pop();
  72. j++;
  73. }
  74. push(symbol);
  75. }
  76. }
  77. }
  78. }
  79. while(stack[top]!='#')
  80. {
  81. postfix[j]=pop();
  82. j++;
  83. }
  84. postfix[j]='\0';
  85. }
  86. void main()
  87. {
  88. char infix[20],postfix[20];
  89. printf("Enter the valid infix string:\n");
  90. gets(infix);
  91. convertip(infix,postfix);
  92. printf("The corresponding postfix string is:\n");
  93. puts(postfix);
  94. }
  95. void push(char item)
  96. {
  97. top++;
  98. stack[top]=item;
  99. }
  100. char pop()
  101. {
  102. char a;
  103. a=stack[top];
  104. top--;
  105. return a;
  106. }
Advertisement
Add Comment
Please, Sign In to add comment