#include<stdio.h> #include<conio.h> #include<string.h> char stack[50]; int top = -1; void in_to_post(char infix[]); void push(char ch); char pop(); void main() { char infix[25]; clrscr(); printf("Enter the infix expression:"); gets(infix); in_to_post(infix); getch(); } void push(char symb) { if (top >= 49) { printf("Stack overflow!"); getch(); return; } else { top++; stack[top]=symb; } } char pop() { char item; if (top == -1) { printf("Stack empty!"); getch(); return (0); } else { item = stack[top]; top--; } return(item); } int preced(char ch) { if (ch==47) return (5); else if (ch==42) return (4); else if (ch == '+' || ch == '-') return (3); else return (2); } void in_to_post(char infix[]) { int length; static int index = 0, pos = 0; char symbol, temp; char postfix[40]; length = strlen(infix); push('#'); while (index < length) { symbol = infix[index]; switch (symbol) { case '(': push(symbol); break; case ')': temp = pop(); while (temp != '(') { postfix[pos]= temp; pos++; temp = pop(); } break; case '+': case '-': case '*': case '/': case '^': while (preced(stack[top]) >= preced(symbol)) { temp = pop(); postfix[pos] = temp; pos++; } push(symbol); break; default: postfix[pos++] = symbol; break; } index++; } while (top > 0) { temp = pop(); postfix[pos++] = temp; } postfix[pos++] = '\0'; puts(postfix); return; }
Search This Blog
Tuesday, 27 October 2015
Infix to postfix
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment