3.Convert an Infix expression to Postfix expression using stack ADT
3.Convert an Infix expression to Postfix expression using stack ADT
3
Aim: Convert an Infix expression to Postfix expression using stack ADT
LO1: Students will be able to implement linear data structures & will be able to handle
operations like insertion, deletion, searching and traversing on them..
Theory:
Infix expression: The expression of the form “a operator b” (a + b) i.e., when an operator is
in-between every pair of operands.
Postfix expression: The expression of the form “a b operator” (ab+) i.e., When every pair of
operands is followed by an operator.
We can easily solve problems using Infix notation, but it is not possible for the computer to
solve the given expression, so system must convert infix to postfix, to evaluate that
expression.
Program :
Result :
Conclusion :
Program :
#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 the expression : ");
scanf("%s",exp);
printf("\n");
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: