Prefix Evaluation
C Program For Prefix Evaluation Source Code: #include <stdio.h> #include <stdlib.h> #include <ctype.h> #define SIZE 20 typedef struct Stack { int a[50]; int top; }Stack; void push(Stack *s, int c) { s->a[++s->top] = c; } int pop(Stack *s) { return s->a[s->top--]; } char* strrev(char str[]) { int i, j = 0; char o[50]; for (i = 0; i < strlen(str) ; ++i) { o[j++] = str[strlen(str) - i - 1] ; } j = 0; for (i = 0; i < strlen(str); ++i) { str[i] = o[j++]; } str[i] = '\0'; return str; } void evalPrefix(char prefixExp[]) { Stack *s = (Stack*)malloc(sizeof(Stack)); int i, l, r, res; s->top = -1; strrev(prefixExp); for (i = 0; prefixExp[i] != '\0'; i++) { if(isdigit(prefixExp[i])) { push(s, prefixExp[i] - '0'); } else { l = pop(s); r = pop(s); switch(prefixExp[i]) { case '+': push(s, l + r); break; case '-': push(s, l - r); break; case '*': push(s, l * r); break; case '/': push(s, l / r); break; } } } res = pop(s); printf("Ans: %d.\n",res); } int main() { char prefixExp[40]; printf("Enter The Prefix Expression: "); scanf("%s",prefixExp); evalPrefix(prefixExp); return 0; }
Tags:
Stack & Queue
0 comments