Postfix Evaluation
Algorithm:- Create an empty stack and scan the postfix expression.
- If the element is an operand, push it to the stack.
- If the element is an operator pop twice and suppose we get A and B respectively, then calculate B op A and push it to the stack.
- Repeat step 2 and 3 until the end of the expression.
- Top of the stack contains the evaluated value.
Note: This program considers the basic operators: +, -, /, * and assumes the operand to be single digit.
Here is the C program for posftix expression evaluation:
#include<stdio.h> #include<conio.h> #include<string.h> int top=0; int stack[]={0}; void operate(char ); void main(){ int i,l; char *postfix; clrscr(); printf("Enter the postfix expression to be evaluated:\n"); scanf("%s",postfix); l=strlen(postfix); for(i=0;i<l;i++){ if(postfix[i]>=48 && postfix[i]<=57){ stack[top++]=postfix[i]-48; //push } else{ operate(postfix[i]); } } printf("the value is: %d",stack[top-1]); getch(); } void operate(char c){ int val; if(c=='+'){ val=stack[top-2]+stack[top-1]; stack[top-2]=val; stack[top-1]=0; top--; } else if(c=='-'){ val=stack[top-2]-stack[top-1]; stack[top-2]=val; stack[top-1]=0; top--; } else if(c=='/'){ val=stack[top-2]/stack[top-1]; stack[top-2]=val; stack[top-1]=0; top--; } else if(c=='*'){ val=stack[top-2]*stack[top-1]; stack[top-2]=val; stack[top-1]=0; top--; } }
No comments:
Post a Comment