PRAMOD KUMAR SAHU - Academy of Technocrats - Data Structure: Stack / Queue
PRAMOD KUMAR SAHU - Academy of Technocrats - Data Structure: Stack / Queue
}
void main()
{
int i,p=0,ch,prec;
char c;
clrscr();
printf("enter an infix expression");
gets(infix);
for(i=0;infix[i]!=0;i++)
{
ch=type_of_char(infix[i]);
switch(ch)
{
case 0:
postfix[p++]=infix[i];
break;
case 1:
push(infix[i]);
break;
case 2:
c=pop();
while(c!='(')
{
postfix[p++]=c;
c=pop();
}
break;
case 3:
prec=precedence(infix[i]);
while(top!=-1 && prec<=precedence(stk[top]))
{
postfix[p++]=pop();
}
push(infix[i]);
break;
}
}
while(top!=-1)
{
postfix[p++]=pop();
}
postfix[p]='\0';
puts(postfix);
}
16
PRAMOD KUMAR SAHU -Academy of Technocrats -Data Structure : Stack / Queue
char pop()
{
return stk[top--];
}
char delete()
{
return que[front++];
}
{
return stk[top--];
}
{
case '+':
case '-':
case '*':
case '/':
return 0;
default :
return 1;
}
}
void evaluate(char ch,int op1,int op2)
{
int result;
switch(ch)
{
case '+':
result=op1+op2;
break;
case '-':
result=op1-op2;
break;
case '*':
result=op1*op2;
break;
case '/':
result=op1/op2;
break;
}
push(result);
}
20
PRAMOD KUMAR SAHU -Academy of Technocrats -Data Structure : Stack / Queue
Postfix Example
Solution: A + (B/C) - D
A + (BC/) - D
A+T-D
(A + T) - D
(AT+) – D
S–D Where S = (AT +)
SD –
AT + D –
ABC/+D-. Postfix Expression.
------------------------------------------------------------------------------------------------
Example 2: Convert the expression (A + B ) /( C –D ) to prefix form.
Solution: (AB+) C / D
T*C/D where T = (AB +)
(T * C) / D
(TC*) / D
S/D
SD /
TC * D /
AB + C * D /-. Postfix Expression.
------------------------------------------------------------------------------------------------
Prefix Example :
Example 4: Give prefix form for A * B + C
Solution: (A*B)+C
21
PRAMOD KUMAR SAHU -Academy of Technocrats -Data Structure : Stack / Queue
22