Infix to Postfix Conversion
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Infix to Postfix</title>
<style type="text/css">
.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}
</style>
</head>
<body bgcolor="#FFFFFF">
<!--BEGIN INFIX TO POSTFIX JAVASCRIPT-->
<script language="JavaScript">
/*
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<infixStr.length; 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<postfixStr.length; i++)
{
returnVal+=postfixStr[i];
}
return(returnVal);
}
</script>
<!--END INFIX TO POSTFIX JAVASCRIPT-->
<center><span class="header">Infix to Postfix Conversion</span></center>
<!--BEGIN FORM-->
<center>
<form name="input_form">
<table class="form_in" cellspacing="0" cellpadding="3">
<tr bgcolor="#003366">
<td><font face="verdana,arial,helvetica" size="-2" color="#CCCCDD">Infix Expression :</font></td>
<td><font face="verdana,arial,helvetica" size="-2" color="#CCCCDD">Postfix Expression :</font></td>
<td></td>
</tr>
<tr>
<td><input type="text" name="infixVal" class="text_box" value=""></td>
<td><input type="text" name="postfixVal" class="text_box" value=""></td>
<td align="bottom"><input type="button" onClick="document.input_form.postfixVal.value=InfixToPostfix(document.input_form.infixVal.value,'arr')" value="Infix to Postfix" class="button"></td>
</tr>
</table>
</form>
</center>
<!--END FORM-->
<table width="465" align="center"><tr><td>
<font face="verdana,arial,helvetica" size="-1" color="#000000">
This is the "JavaScript" Implementation of converting an Infix(Inorder) expression to Postfix(Postorder) expression.
<br><br><a href="http://www.qiksearch.com/articles/cs/infix-postfix/index.htm" class="link">Click here</a> for the algorithm used.
<hr style="color:#003366; height:1px">
© 2002 <a href="http://www.qiksearch.com" class="link" title="Click here to visit Qiksearch.com">Premshree Pillai</a>.
</font>
</td></tr></table>
</body>
</html>
Related examples in the same category