#include<stdio.h> #include<conio.h> #include<ctype.h> struct stack { int top; int operand[40]; }; int main () { struct stack s; char st[40]; int i=0,result,op1,op2,value; s.top=-1; clrscr(); printf("Enter postfix form: \n"); while((st[i]=getchar())!='\n') { if(isdigit(st[i])) { printf("Pushing----- %d\t",st[i]-'0'); push(&s,st[i]-'0'); } else { op2=s.operand[s.top]; pop(&s); printf("\nPoping------ %d\t",op2); op1=s.operand[s.top]; pop(&s); printf("Poping------ %d\t",op1); printf("\nApplying the operator %c",st[i]); switch(st[i]) { case '+' :result=op1+op2; break; case '-' :result=op1-op2; break; case '*' :result=op1*op2; break; case '/' :result=op1/op2; break; } printf("\nPushing intermidate result: %d\n\n",result); push(&s,result); } i++; } printf("\nValue of the postfix expression : %d",result); getch(); return 0; } push(ps,n) struct stack *ps; int n; { ps->top++; ps->operand[ps->top]=n; } pop(ps) struct stack *ps; { ps->top--; }