<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>how to &#187; Algorithm</title>
	<atom:link href="http://www.neteyaz.com/category/algorithm/feed" rel="self" type="application/rss+xml" />
	<link>http://www.neteyaz.com</link>
	<description>linux and open source tips</description>
	<lastBuildDate>Mon, 23 May 2011 08:47:12 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>javascript infix and postfix example with stack</title>
		<link>http://www.neteyaz.com/javascript-infix-and-postfix-example-with-stack</link>
		<comments>http://www.neteyaz.com/javascript-infix-and-postfix-example-with-stack#comments</comments>
		<pubDate>Sun, 22 Nov 2009 11:26:17 +0000</pubDate>
		<dc:creator>banias</dc:creator>
				<category><![CDATA[Algorithm]]></category>
		<category><![CDATA[calculator]]></category>
		<category><![CDATA[infix]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[postfix]]></category>

		<guid isPermaLink="false">http://www.neteyaz.com/?p=117</guid>
		<description><![CDATA[Infix calculator
postfix calculator
infix to postfix algorithm
postfix to infix algorithm
stack methods
how to do infix and postfix notation with stack

click here for live example

1 - /*
2 -   Infix ~ Postfix Conversion
3 -   - Converts an Infix(Inorder) expression to Postfix(Postorder) and vice-versa
4 -   - Valid Operators are +,-,*,/,^,()
5 -   - [...]]]></description>
			<content:encoded><![CDATA[<p>Infix calculator<br />
postfix calculator<br />
infix to postfix algorithm<br />
postfix to infix algorithm<br />
stack methods<br />
how to do infix and postfix notation with stack<br />
<span id="more-117"></span><br />
<a href="http://scriptasylum.com/tutorials/infix_postfix/infix_postfix.html" rel="nofollow external" target="_blank">click here</a> for live example</p>
<pre class="prettyprint">
1 - /*
2 -   Infix ~ Postfix Conversion
3 -   - Converts an Infix(Inorder) expression to Postfix(Postorder) and vice-versa
4 -   - Valid Operators are +,-,*,/,^,()
5 -   - No Error Handling in this version
6 -   JavaScript Implementation
7 -   - © 2002 Premshree Pillai
8 -   See algorithms at
9 -   -http://www.qiksearch.com/articles/cs/infix-postfix/index.htm
10 -   -http://www.qiksearch.com/articles/cs/postfix-evaluation/index.htm
11 -   Created : 03/08/02 (dd/mm/yy)
12 -   Modified : 23/10/02 (dd/mm/yy)
13 -   Web : http://www.qiksearch.com
14 -   E-mail : qiksearch@rediffmail.com
15 - */
16 -
17 - function push_stack(stackArr,ele)
18 - {
19 - 	stackArr[stackArr.length]=ele;
20 - }
21 -
22 - function pop_stack(stackArr)
23 - {
24 - 	var _temp=stackArr[stackArr.length-1];
25 - 	delete stackArr[stackArr.length-1];
26 - 	stackArr.length--;
27 - 	return(_temp);
28 - }
29 -
30 - function isOperand(who)
31 - {
32 - 	return((!isOperator(who) &#038;&#038; (who!="(") &#038;&#038; (who!=")"))? true : false);
33 - }
34 -
35 - function isOperator(who)
36 - {
37 - 	return((who=="+" || who=="-" || who=="*" || who=="/" || who=="^")? true : false);
38 - }
39 -
40 - function topStack(stackArr)
41 - {
42 - 	return(stackArr[stackArr.length-1]);
43 - }
44 -
45 - function isEmpty(stackArr)
46 - {
47 - 	return((stackArr.length==0)? true : false);
48 - }
49 -
50 - /* Check for Precedence */
51 - function prcd(who)
52 - {
53 - 	if(who=="^")
54 - 		return(5);
55 - 	if((who=="*")||(who=="/"))
56 - 		return(4);
57 - 	if((who=="+")||(who=="-"))
58 - 		return(3);
59 - 	if(who=="(")
60 - 		return(2);
61 - 	if(who==")")
62 - 		return(1);
63 - }
64 -
65 - function InfixToPostfix(infixStr,postfixStr,retType)
66 - {
67 - 	var postfixStr=new Array();
68 - 	var stackArr=new Array();
69 - 	var postfixPtr=0;
70 - 	infixStr=strToTokens(infixStr);
71 - 	for(var i=0; i<infixStr.length; i++)
72 - 	{
73 - 		if(isOperand(infixStr[i]))
74 - 		{
75 - 			postfixStr[postfixPtr]=infixStr[i];
76 - 			postfixPtr++;
77 - 		}
78 - 		if(isOperator(infixStr[i]))
79 - 		{
80 - 			if(infixStr[i]!="^")
81 - 			{
82 - 				while((!isEmpty(stackArr)) &#038;&#038; (prcd(infixStr[i])<=prcd(topStack(stackArr))))
83 - 				{
84 - 					postfixStr[postfixPtr]=topStack(stackArr);
85 - 					pop_stack(stackArr);
86 - 					postfixPtr++;
87 - 				}
88 - 			}
89 - 			else
90 - 			{
91 - 				while((!isEmpty(stackArr)) &#038;&#038; (prcd(infixStr[i])
<prcd(topStack(stackArr))))
92 - 				{
93 - 					postfixStr[postfixPtr]=topStack(stackArr);
94 - 					pop_stack(stackArr);
95 - 					postfixPtr++;
96 - 				}
97 - 			}
98 - 			push_stack(stackArr,infixStr[i]);
99 - 		}
100 - 		if(infixStr[i]=="(")
101 - 			push_stack(stackArr,infixStr[i]);
102 - 		if(infixStr[i]==")")
103 - 		{
104 - 			while(topStack(stackArr)!="(")
105 - 			{
106 - 				postfixStr[postfixPtr]=pop_stack(stackArr);
107 - 				postfixPtr++;
108 - 			}
109 - 			pop_stack(stackArr);
110 - 		}
111 - 	}
112 - 	while(!isEmpty(stackArr))
113 - 	{
114 - 		if(topStack(stackArr)=="(")
115 - 			pop_stack(stackArr)
116 - 		else
117 - 			postfixStr[postfixStr.length]=pop_stack(stackArr);
118 - 	}
119 - 	var returnVal='';
120 - 	for(var i=0; i<postfixStr.length; i++)
121 - 	{
122 - 		returnVal+=postfixStr[i];
123 - 	}
124 - 	if(retType==0)
125 - 		return(returnVal);
126 - 	else
127 - 		return(postfixStr);
128 - }
129 -
130 - function PostfixToInfix(postfixStr)
131 - {
132 - 	var stackArr=new Array();
133 - 	postfixStr=postfixStr.split('');
134 - 	for(var i=0; i<postfixStr.length; i++)
135 - 	{
136 - 		if(isOperand(postfixStr[i]))
137 - 			push_stack(stackArr,postfixStr[i]);
138 - 		else
139 - 		{
140 - 			var temp=topStack(stackArr);
141 - 			pop_stack(stackArr);
142 - 			var pushVal='('+topStack(stackArr)+postfixStr[i]+temp+')';
143 - 			pop_stack(stackArr);
144 - 			push_stack(stackArr,pushVal);
145 - 		}
146 - 	}
147 - 	return(topStack(stackArr));
148 - }
149 -
150 - function strToTokens(str)
151 - {
152 - 	var strArr=str.split("");
153 - 	var tempStr=new String("");
154 - 	var tokens=new Array();
155 - 	var tokens_index=0;
156 - 	for(var i=0; i<strArr.length; i++)
157 - 	{
158 - 		if(isOperand(strArr[i]))
159 - 		{
160 - 			tempStr+=strArr[i];
161 - 		}
162 - 		if(isOperator(strArr[i]) || strArr[i]==")" || strArr[i]=="(")
163 - 		{
164 - 			if(tempStr!="")
165 - 			{
166 - 				tokens[tokens_index]=tempStr;
167 - 				tokens_index++;
168 - 			}
169 - 			tempStr="";
170 - 			tokens[tokens_index]=strArr[i];
171 - 			tokens_index++;
172 - 		}
173 - 		if(i==strArr.length-1)
174 - 			if(tempStr!="")
175 - 				tokens[tokens_index]=tempStr;
176 - 	}
177 - 	return(tokens);
178 - }
179 -
180 - function PostfixSubEval(num1,num2,sym)
181 - {
182 - 	var returnVal;
183 - 	if(sym=="+")
184 - 		returnVal=num1+num2;
185 - 	if(sym=="-")
186 - 		returnVal=num1-num2;
187 - 	if(sym=="*")
188 - 		returnVal=num1*num2;
189 - 	if(sym=="/")
190 - 		returnVal=num1/num2;
191 - 	if(sym=="^")
192 - 		returnVal=Math.pow(num1,num2);
193 - 	return(returnVal);
194 - }
195 -
196 - function PostfixEval(postfixStr)
197 - {
198 - 	var stackArr=new Array();
199 - 	for(var i=0; i<postfixStr.length; i++)
200 - 	{
201 - 		if(isOperand(postfixStr[i]))
202 - 			push_stack(stackArr,postfixStr[i]);
203 - 		else
204 - 		{
205 - 			var temp=parseFloat(topStack(stackArr));
206 - 			pop_stack(stackArr);
207 - 			var pushVal=PostfixSubEval(parseFloat(topStack(stackArr)),temp,postfixStr[i]);
208 - 			pop_stack(stackArr);
209 - 			push_stack(stackArr,pushVal);
210 - 		}
211 - 	}
212 - 	return(topStack(stackArr));
213 - }
214 - </pre>
]]></content:encoded>
			<wfw:commentRss>http://www.neteyaz.com/javascript-infix-and-postfix-example-with-stack/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

