|
#include<stdio.h> |
|
#include<ctype.h> |
|
char stack[20]; |
|
int top = -1; |
|
int priority(char); |
|
void push(char); |
|
char pop(); |
|
main() { |
|
char exp[20]; |
|
char *e, x; |
|
printf("Program to convert infix expression into postfix.\n\n"); |
|
printf("Enter the expression: "); |
|
scanf("%s",exp); |
|
printf("\nRequired expression is: "); |
|
e = exp; |
|
while(*e != '\0') { |
|
if(isalnum(*e)) |
|
printf("%c",*e); |
|
else if(*e == '(') |
|
push(*e); |
|
else if(*e == ')') { |
|
while((x = pop()) != '(') |
|
printf("%c", x); |
|
} |
|
else { |
|
while(priority(stack[top]) >= priority(*e)) |
|
printf("%c",pop()); |
|
push(*e); |
|
} |
|
e++; |
|
} |
|
while(top != -1) { |
|
printf("%c",pop()); |
|
} |
|
} |
|
|
|
void push(char x) { |
|
stack[++top] = x; |
|
} |
|
|
|
char pop() { |
|
if(top == -1) |
|
return -1; |
|
else |
|
return stack[top--]; |
|
} |
|
|
|
int priority(char x) { |
|
if(x == '(') |
|
return 0; |
|
if(x == '+' || x == '-') |
|
return 1; |
|
if(x == '*' || x == '/') |
|
return 2; |
|
} |