Infix To Postfix Conversion V2
Infix To Postfix Conversion V2
Infix Expression
(a+b-c)*d–(e+f)
Postfix Expression
Infix to postfix conversion
Stack
Infix Expression
a+b-c)*d–(e+f)
Postfix Expression
(
Infix to postfix conversion
Stack
Infix Expression
+b-c)*d–(e+f)
Postfix Expression
a
(
Infix to postfix conversion
Stack
Infix Expression
b-c)*d–(e+f)
Postfix Expression
a
+
(
Infix to postfix conversion
Stack
Infix Expression
-c)*d–(e+f)
Postfix Expression
ab
+
(
Infix to postfix conversion
Stack
Infix Expression
c)*d–(e+f)
Postfix Expression
ab+
-
(
Infix to postfix conversion
Stack
Infix Expression
)*d–(e+f)
Postfix Expression
ab+c
-
(
Infix to postfix conversion
Stack
Infix Expression
*d–(e+f)
Postfix Expression
ab+c-
Infix to postfix conversion
Stack
Infix Expression
d–(e+f)
Postfix Expression
ab+c-
*
Infix to postfix conversion
Stack
Infix Expression
–(e+f)
Postfix Expression
ab+c-d
*
Infix to postfix conversion
Stack
Infix Expression
(e+f)
Postfix Expression
ab+c–d*
-
Infix to postfix conversion
Stack
Infix Expression
e+f)
Postfix Expression
ab+c–d*
(
-
Infix to postfix conversion
Stack
Infix Expression
+f)
Postfix Expression
ab+c–d*e
(
-
Infix to postfix conversion
Stack
Infix Expression
f)
Postfix Expression
+ ab+c–d*e
(
-
Infix to postfix conversion
Stack
Infix Expression
)
Postfix Expression
+ ab+c–d*ef
(
-
Infix to postfix conversion
Stack
Infix Expression
Postfix Expression
ab+c–d*ef+
-
Infix to postfix conversion
Stack
Infix Expression
Postfix Expression
ab+c–d*ef+-
#include<stdio.h>
#include<stdlib.h>
#define STACKSIZE 20
typedef struct{
int top;
char items[STACKSIZE];
}STACK;
void push(STACK *, char);
char pop(STACK *);
void main()
{
int i;
char x,y, E[20] ; /* Assume that Infix Expression E contains single-digit
integers/parenthesis/operators*/
STACK s;
s.top = -1; /* Initialize the stack is */
printf("Enter the Infix Expression:");
scanf("%s",E);
for(i=0;E[i] != '\0';i++){
x= E[i];
if(x<=’z’ && x>=’a’) /* Consider all lowercase letter operands from a to z */
printf(“%c”,x);
else if(x == ’(’)
push(&s ,x);
else if(x == ’)’){
y=pop(&s) ;
while(y != ‘(‘){
printf(“%c”,y);
y=pop(&s) ;
}
}
else {
if(s.top ==-1 || s.items[s.top] == ‘(‘)
push(&s ,x);
else {
y = s.items[s.top]; /* y is the top operator in the stack*/
if( y==’*’ || y==’/’){ /* precedence of y is higher/equal to x*/
printf(“%c”, pop(&s));
push(&s ,x);
}
else if ( y==’+’ || y==’-’)
if( x==’+’ || x==’-’) { /* precedence of y is equal to x*/
printf(“%c”, pop(&s));
push(&s ,x);
}
else /* precedence of y is less than x*/
push(&s ,x);
}
}
}
while(s.top != -1)
printf(“%c”,pop(&s));
}
void push(STACK *sptr, char ps) /*pushes ps into stack*/
{
if(sptr->top == STACKSIZE-1){
printf("Stack is full\n");
exit(1); /*exit from the function*/
}
else
sptr->items[++sptr->top]= ps;
}
char pop(STACK *sptr)
{
if(sptr->top == -1){
printf("Stack is empty\n");
exit(1); /*exit from the function*/
}
else
return sptr->items[sptr->top--];
}