Click here to Login

infix to postfix, postfix and prefix evaluation


1.Infix to postfix conversion

#include
#include
#include
char arr[100];
int maxsize;
int top;
void push(char c)
{
top++;
arr[top]=c;
}
char pop()
{
if(top==-1){
return -1;
}
char x= arr[top];
top--;
return x;
}
int prec(char ch){
if(ch=='+'||ch=='-')
return 1;
else if(ch=='*'||ch=='/')
return 2;
else
return -1;

}
main()
{
maxsize=100;top=-1;
char infix[100],postfix[100];
int i,k=0;

printf("enter infix");
scanf("%s",infix);

for(i=0;i

{
switch(infix[i])
{
case '(':
push(infix[i]);
break;
case ')':
char c;
while((c=pop())!='(')
{
postfix[k++]=c;
}
break;
case '+':
case '-':
case '*':
case '/':
if(top==-1){
push(infix[i]);
}
else
{

while(prec(arr[top])>=prec(infix[i]))
{
postfix[k++]=pop();
}
push(infix[i]);
}
break;
default:
postfix[k++]=infix[i];
break;
}
}
while(top!=-1)
{
postfix[k++]=pop();
}
postfix[k]='\0';
printf("%s is postfix",postfix);
getch();

}


2. Postfix Evaluation


#include
#include          
#include
int arr[100];
int maxsize=100;
int top=-1;       /* Global declarations */

push(int elem)
{
top=top+1  ;                    /* Function for PUSH operation */
arr[top]=elem;
}

int pop()
{   
  int x=arr[top] ;
  top=top-1;                  /* Function for POP operation */
 return(x);
}

main()
{                         /* Main Program */
char pofx[50],ch;
  int i=0,op1,op2,res,val;
  printf("\n\nRead the Postfix Expression ? ");
  scanf("%s",pofx);
for(i=0;i
{
  switch(pofx[i])
  {
 
 
  
    case '+':
    op1=pop();
    op2=pop();
  res=op2+op1;
  push(res);
  break;
case '-':
    op1=pop();
    op2=pop();
  res=op2-op1;
  push(res);
  break;  
  case '*':
    op1=pop();
    op2=pop();
  res=op2*op1;
  push(res);
  break;
case '/':
    op1=pop();
    op2=pop();
  res=op2/op1;
  push(res);
  break;
default:
printf("Enter the value of %c",pofx[i]);
scanf("%d",&val);
push(val);
break;
 
}
  }

 printf("\n Given Postfix Expn: %s\n",pofx);
 printf("\n Result after Evaluation: %d\n",arr[top]);

}



3.Evaluation of Prefix Expression


#include
#include         
#include
int arr[100];
int maxsize=100;
int top=-1;       /* Global declarations */

push(int elem)
{
top=top+1  ;                    /* Function for PUSH operation */
arr[top]=elem;
}

int pop()
{   
  int x=arr[top] ;
  top=top-1;                  /* Function for POP operation */
 return(x);
}

main()
{                         /* Main Program */
char prefix[50],ch;
  int i=0,op1,op2,res,val;
  printf("\n\nRead the prefix Expression ? ");
  scanf("%s",prefix);
for(i=strlen(prefix)-1;i>=0;i--)
{
  switch(prefix[i])
  {
 
 
  
    case '+':
    op1=pop();
    op2=pop();
  res=op1+op2;
  push(res);
  break;
case '-':
    op1=pop();
    op2=pop();
  res=op1-op2;
  push(res);
  break;  
  case '*':
    op1=pop();
    op2=pop();
  res=op1*op2;
  push(res);
  break;
case '/':
    op1=pop();
    op2=pop();
  res=op1/op2;
  push(res);
  break;
default:
printf("Enter the value of %c",prefix[i]);
scanf("%d",&val);
push(val);
break;
 
}
  }

 printf("\n Given Postfix Expn: %s\n",prefix);
 printf("\n Result after Evaluation: %d\n",arr[top]);

}







1 comment: Leave Your Comments