0
1.0kviews
Write a program to convert and expression from infix to postfix using stack

Topic: Application of Stack

Difficulty: High

Year(Marks): Dec2016(10 mks),Dec2017(10 mks)

1 Answer
0
12views
#include<stdio.h>
#include<conio.h>

char stack[20];
int top = -1;
void push(char x)
{
    stack[++top] = x;
}

char pop()
{
    if(top == -1)
    {
        return -1;
    }
    else
    {
        return stack[top--];
    }
}

int priority(char x)
{
    if(x == '(')
    {
        return 0;
    }
    if(x == '+' || x == '-')
    {
        return 1;
    }
    if(x == '*' || x == '/')
    {
        return 2;
    }
}

void main()
{
    char exp[20];
    char *e, x;
    clrscr();
    printf("Enter the expression :: ");
    scanf("%s",exp);
    e = exp;
    while(*e != '\0')
    {
        if(isalnum(*e))
        {
            printf("%c",*e);
        }
        else if(*e == '(')
        {
            push(*e);
        }
        else if(*e == ')')
        {
            while((x = pop()) != '(')
            {
                printf("%c", x);
            }
        }
        else
        {
            while(priority(stack[top]) >= priority(*e))
            {   
                printf("%c",pop());
            }
            push(*e);
        }
        e++;
    }
    while(top != -1)
    {
        printf("%c",pop());
    }
    getch();
}
Please log in to add an answer.