(DSL6) Infix to Postfix
♾️

(DSL6) Infix to Postfix

Code

#include <stdio.h> typedef struct { char arr[100]; int top; } Stack; Stack stack; int isOperand(char ch); int isEmpty(); void push(int op); char pop(); char top(); int precedence(char ch); void display(); void main() { char infix[100], postfix[100]; int i = 0, p = 0; char c; printf("Enter the infix expression: "); gets(infix); for (i = 0; infix[i] != '\0'; i++) { char ch = infix[i]; if (isOperand(ch)) { postfix[p++] = ch; } else { if (ch == '(') { push(ch); } else if (ch == ')') { while ((c = pop()) != '(') { postfix[p++] = c; } } else { if (precedence(ch) <= precedence(top())) { postfix[p++] = pop(); push(ch); } else { push(ch); } } } } while (!isEmpty()) { postfix[p++] = pop(); } postfix[p] = '\0'; display(&postfix); } int isOperand(char ch) { return ((ch >= 'A' && ch <= 'Z')); } int isEmpty() { return (stack.top == 0); } void push(int op) { stack.arr[++stack.top] = op; } char pop() { return stack.arr[stack.top--]; } char top() { return stack.arr[stack.top]; } int precedence(char ch) { switch (ch) { case '^': return 4; case '*': case '/': case '%': return 3; case '+': case '-': return 2; default: return 1; } } void display(char * ptr) { int i; printf("\nPostfix expression is: \n"); for (i = 0; *(ptr+i) != '\0'; i++) { printf("%c", *(ptr+i)); } printf("\n"); }