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

