Stack is very useful for storing data in the manner of the stack. It s useful when comes to the conversion of arithmetic expressions in high-level programming languages into machine-readable form. There are some complicated arithmetic expressions such as (A+B)*C(D/(E+D)). This form can be converted into polish notation using stack.
Infix and Postfix Expression
Infix expression contains the operator at the middle of the operands such as A+B. Whereas Postfix expression the operator goes to the end of the expression such as AB+.
Let us go through an example in the C program.
Infix to Postfix Conversion in C Program using Stack
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | #include<stdio.h> #include<ctype.h> char stack[100]; int top = -1; 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; return 0; } int main() { char exp[100]; char *e, x; printf("Enter Infix expression : "); scanf("%s",exp); 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()); }return 0; } |
Output: Run 1
Output: Run 2