Development JavaScript DHTML




Infix to Postfix

.header{font-family:verdana,arial,helvetica; font-weight:bold; font-size:22pt; color:#003366; filter:DropShadow(color=#CCCCDD, offX=2, offY=2, positive=1); width:100%}
.form_in{background:#FCFCFF; border:#003366 solid 1px}
.text_box{font-weight:bold; background:#EFEFF5; border:#003366 solid 1px; height:20px}
.button{background:#CCCCDD; font-weight:bold; color:#003366; border:#003366 solid 1px; height:20px; cursor:hand}
.link{color:#003366}
.link:hover{color:#666699}





/*
  Infix to Postfix Conversion
  - Converts an Infix(Inorder) expression to Postfix(Postorder)
  - For eg. '1*2+3' converts to '12*3+'
  - Valid Operators are +,-,*,/
  - No Error Handling in this version
  JavaScript Implementation
  - CopyRight 2002 Premshree Pillai
  See algorithm at
  -http://www.qiksearch.com/articles/cs/infix-postfix/index.htm
  Created : 28/08/02 (dd/mm/yy)
  Web : http://www.qiksearch.com
  E-mail : qiksearch@rediffmail.com
*/
function push_stack(stackArr,ele)
{
 stackArr[stackArr.length]=ele;
}
function pop_stack(stackArr)
{
 var _temp=stackArr[stackArr.length-1];
 delete stackArr[stackArr.length-1];
 stackArr.length--;
 return(_temp);
}
function isOperand(who)
{
 return(!isOperator(who)? true : false);
}
function isOperator(who)
{
 return((who=="+" || who=="-" || who=="*" || who=="/" || who=="(" || who==")")? true : false);
}
function topStack(stackArr)
{
 return(stackArr[stackArr.length-1]);
}
function isEmpty(stackArr)
{
 return((stackArr.length==0)? true : false);
}
/* Check for Precedence */
function prcd(char1,char2)
{
 var char1_index,char2_index;
 var _def_prcd="-+*/";
 for(var i=0; i<_def_prcd.length; i++)
 {
  if(char1==_def_prcd.charAt(i)) char1_index=i;
  if(char2==_def_prcd.charAt(i)) char2_index=i;
 }
 if(((char1_index==0)||(char1_index==1)) && (char2_index>1)) return false;
 else return true;
}
function InfixToPostfix(infixStr,postfixStr)
{
 var postfixStr=new Array();
 var stackArr=new Array();
 var postfixPtr=0;
 infixStr=infixStr.split('');
 for(var i=0; i {
  if(isOperand(infixStr[i]))
  {
   postfixStr[postfixPtr]=infixStr[i];
   postfixPtr++;
  }
  else
  {
   while((!isEmpty(stackArr)) && (prcd(topStack(stackArr),infixStr[i])))
   {
    postfixStr[postfixPtr]=topStack(stackArr);
    pop_stack(stackArr);
    postfixPtr++;
   }
   if((!isEmpty(stackArr)) && (infixStr[i]==")"))
   {
    pop_stack(stackArr);
   }
   else
   {
    push_stack(stackArr,infixStr[i]);
   }
  }
 }
 while(!isEmpty(stackArr))
 {
  postfixStr[postfixStr.length]=topStack(stackArr);
  pop_stack(stackArr);
 }
 var returnVal='';
 for(var i=0; i {
  returnVal+=postfixStr[i];
 }
 return(returnVal);
}


Infix to Postfix Conversion





 
  Infix Expression :
  Postfix Expression :
  
 
 
  
  
  
 





 
 This is the "JavaScript" Implementation of converting an Infix(Inorder) expression to Postfix(Postorder) expression.
 

Click here for the algorithm used.
 
 © 2002 Premshree Pillai.