CONVERSION_INFIX_TO_POSTFIX

INFIX TO POSTFIX CONVERSION

HOME
/*..PROGRAM
FOR CONVERSION OF THE INFIX

EXPRESSION INTO POSTFIX
EXPRESSION..*/

#include<iostream.h>
#include<ctype.h>
#include<math.h>
#include<string.h>
int
j,q,m=0;

char
a,b=NULL;

class
postfix //CLASS
DECLARATION

{
private:
  
 

   
char data,*expr,R[22];

  
 postfix *next;

public:
  
 

  
 void evaluate(char *);

  
 void push(char);

  
     char pop();

  
 void show(int);

  
 int priority(char);

}
*top ;

//FUNCTION
FOR EXPRESSION CONVERSION

void
postfix::evaluate(char *c)

{
expr=c;
  
 

 
for(int i=0,j=-1;expr[i]!=”;i++)

 
{

 
if( isdigit(expr[i])||isalpha(expr[i]) )

  
{

   
R[++j]=expr[i];

  
}

 
else

  
{

   
if(top!=NULL)

   
{

  
 b=pop();

  
 push(b);

   
}

 if(expr[i]==’)’)
  
 push(expr[i]);

else
  
 if(expr[i]=='(‘)

  
 {

  
 R[++j]=pop();

  
 m++;

  
 }

  
 else if(expr[i]=='(‘)

  
 push(expr[i]);

  
 else

  
 {

  
 int n1=priority(b);

  
 int n2=priority(expr[i]);

  
  if(n1<=n2)

  
 push(expr[i]);

  
 else

  
 {

  
  R[++j]=pop();

  
  push(expr[i]);

  
 }

  
 }

  
 }

  
 }

 while(top!=NULL)

 R[++j]=pop();
 
        

}
char
postfix::pop()//FUNCTION
FOR POPPING

{
  
 char x=NULL;

  
 postfix *temp;

  
 temp=top;

  
 x=temp->data;

  
 if(top==NULL)

  
     return(‘0’);

  
 else

  
 {

  
  top=temp->next;

  
  delete temp;

  
 }

  
 return(x);    

}
  
 

//FUNCTION
FOR CHECKING PRIORITY

int
postfix::priority(char y)

{
  
 if(y==’$’)

  
     return(3);

  
 if(y==’*’||y==’/’)

  
     return(2);

  
 if(y==’+’||y==’-‘)

  
 return(1);

  
 else

  
     return(0);

  
 

}

//FUNCTION
FOR PUSHING ELEMENTS

void
postfix::push(char ch)

{
 
postfix *n,*temp;

 
n=new(postfix);

 
n->data=ch;

 
n->next=NULL;

 
if(top==NULL)

  
   top=n;

 
else

 
{

 
temp=top;

 
n->next=temp;

 
top=n;

 
}

 

}
//FUNCTION
FOR DISLAYING OUTPUT

void
postfix::show(int q)

{

   
for(int i=0;i<q-m;i++)

  
 {

  
 if(R[i]=='(‘||R[i]==’)’);

  
 else

  
     cout<<R[i];

  
 }

}

void
main()//MAIN()
FUNCTION STARTS

{
  
 char s[22];

  
 top=NULL;

  
 postfix k;//OBJECT
CREATION

  
 cout<<“enter the INFIX expresion”;

  
 cin>>s;

  
 int q=strlen(s);

  
 k.evaluate(s);

  
 cout<<“THE POSTFIX EXPRESION IS –>”;

   
k.show(q);

}//END OF MAIN()
//END
OF PROGRAM

/*
OUTPUT:

enter
the INFIX expresiona$b*c-d+e/f/(g+h)

THE
POSTFIX EXPRESION IS –>ab$c*d-ef/gh+/+

Press
any key to continue

*/

HOME

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: