diff --git a/convert.c b/convert.c index 654c2786..22f385d7 100644 --- a/convert.c +++ b/convert.c @@ -1,18 +1,22 @@ -#include -char stack[20]; -int top = -1; -void push(char x) +//convert infix to postfix +#include +char stack[20]; //declaring an empty stack +int top = -1; //declaring top of stack + +void push(char x) //push function { - stack[++top] = x; + stack[++top] = x; //each time it is pushed top is increamented } - char pop() + + char pop() //pop function { if(top == -1) return -1; else - return stack[top--]; + return stack[top--]; //each time it is popped top is decreamented } - int priority(char x) + + int priority(char x) // to check the priority of characters { if(x == '(') return 0; @@ -35,23 +39,24 @@ int main() { if(isalnum(*e)) printf("%c",*e); - else if(*e == '(') + else if(*e == '(') //push it directly into the stack push(*e); - else if(*e == ')') + else if(*e == ')') //pop until we gwt the left parenthesis { while((x = pop()) != '(') printf("%c", x); } else { - while(priority(stack[top]) >= priority(*e)) + while(priority(stack[top]) >= priority(*e)) //pop until priority of top of stack is greater than equal to priority of expressions character printf("%c",pop()); - push(*e); + push(*e); //otherwise push } e++; } + // keep popping until top is not -1 while(top != -1) { - printf("%c",pop()); + printf("%c",pop()); } }