PROGRAM TO CONVERT INFIX NOTATION TO POSTFIX NOTATION USING STACKS IN C

DATA STRUCTURES PROGRAMS

PROGRAM TO CONVERT INFIX NOTATION TO POSTFIX NOTATION USING STACKS IN C


#include<stdio.h>

#include<conio.h>

#include<string.h>

#define MAX 20

char stack[MAX];

int top=-1;

char pop();

void push(char item);

int prcd(char symbol)

{

switch(symbol)

{

case '+':

case '-':return 2;

break;

case '*':

case '/':return 4;

break;

case '^':

case ':return 6;

break;

case '(':

case ')':

case '#':return 1;

break;

}

}

int isoperator(char symbol)

{

switch(symbol)

{

case '+':

case '-':

case '*':

case '/':

case '^':

case ':

case '(':

case ')':return 1;

break;

default:return 0;

}

}

void convertip(char infix[],char postfix[])

{

int i,symbol,j=0;

stack[++top]='#';

for(i=0;i<strlen(infix);i++)

{

symbol=infix[i];

if(isoperator(symbol)==0)

{

postfix[j]=symbol;

j++;

}

else{

if(symbol=='(')push(symbol);

else if(symbol==')')

{

while(stack[top]!='(')

{

postfix[j]=pop();

j++;

}

pop();//pop out (.

}

else{

if(prcd(symbol)>prcd(stack[top]))

push(symbol);

else{

while(prcd(symbol)<=prcd(stack[top]))

{

postfix[j]=pop();

j++;

}

push(symbol);

}//end of else.

}//end of else.

}//end of else.

}//end of for.

while(stack[top]!='#')

{

postfix[j]=pop();

j++;

}

postfix[j]='\0';//null terminate string.

}

void main()

{

char infix[20],postfix[20];

clrscr();

printf("Enter the valid infix string:\n");

gets(infix);

convertip(infix,postfix);

printf("The corresponding postfix string is:\n");

puts(postfix);

getch();

}

void push(char item)

{

top++;

stack[top]=item;

}

char pop()

{

char a;

a=stack[top];

top--;

return a;

}





Comments