éæ³¢å
°è¡¨è¾¾å¼ï¼å®çè¯æ³è§å®ï¼è¡¨è¾¾å¼å¿
须以éæ³¢å
°è¡¨è¾¾å¼çæ¹å¼ç»åºãéæ³¢å
°è¡¨è¾¾å¼åå«ååç¼è¡¨è¾¾å¼ãè¿ä¸ªç¥è¯ç¹å¨æ°æ®ç»æåç¼è¯åçè¿ä¸¤é¨è¯¾ç¨ä¸é½æä»ç»ï¼ä¸é¢æ¯ä¸äºä¾åï¼
ããæ£å¸¸çè¡¨è¾¾å¼ éæ³¢å
°è¡¨è¾¾å¼
ããa+b ---> a,b,+
ããa+(b-c) ---> a,b,c,-,+
ããa+(b-c)d ---> a,d,b,c,-,,+
ããa=1+3 ---> a=1,3 +
ããhttp=(smtp+http+telnet)/1024 åæä»ä¹å¢ï¼
ããhttp=smtp,http,telnet,+,+,1024,/
ããéæ³¢å
°è¡¨è¾¾å¼æ¯ä¸ç§ååæç¨ç表达å¼ï¼å®å°å¤æ表达å¼è½¬æ¢ä¸ºå¯ä»¥ä¾é ç®åçæä½å¾å°è®¡ç®ç»æç表达å¼ãä¾å¦(a+b)(c+d)转æ¢ä¸ºab+cd+
ããå®çä¼å¿å¨äºåªç¨ä¸¤ç§ç®åæä½ï¼å
¥æ ååºæ å°±å¯ä»¥æå®ä»»ä½æ®é表达å¼çè¿ç®ãå
¶è¿ç®æ¹å¼å¦ä¸ï¼
ããå¦æå½åå符为åéæè
为æ°åï¼ååæ ï¼å¦ææ¯è¿ç®ç¬¦ï¼åå°æ 顶两个å
ç´ å¼¹åºä½ç¸åºè¿ç®ï¼ç»æåå
¥æ ï¼æåå½è¡¨è¾¾å¼æ«æå®åï¼æ éçå°±æ¯ç»æã
ããå°ä¸ä¸ªæ®éçä¸åºè¡¨è¾¾å¼è½¬æ¢ä¸ºéæ³¢å
°è¡¨è¾¾å¼çä¸è¬ç®æ³æ¯ï¼
ãã(1)é¦å
æé ä¸ä¸ªè¿ç®ç¬¦æ ï¼æ¤è¿ç®ç¬¦å¨æ å
éµå¾ªè¶å¾æ 顶ä¼å
级è¶é«çååã
ãã(2)读å
¥ä¸ä¸ªç¨ä¸ç¼è¡¨ç¤ºçç®åç®æ¯è¡¨è¾¾å¼ï¼ä¸ºæ¹ä¾¿èµ·è§,设该ç®åç®æ¯è¡¨è¾¾å¼çå³ç«¯å¤å ä¸äºä¼å
级æä½çç¹æ®ç¬¦å·â#âã
ãã(3)ä»å·¦è³å³æ«æ该ç®æ¯è¡¨è¾¾å¼ï¼ä»ç¬¬ä¸ä¸ªå符å¼å§å¤æï¼å¦æ该å符æ¯æ°åï¼ååæå°è¯¥æ°å串çç»æ并å°è¯¥æ°å串ç´æ¥è¾åºã
ãã(4)å¦æä¸æ¯æ°åï¼è¯¥å符åæ¯è¿ç®ç¬¦ï¼æ¤æ¶éæ¯è¾ä¼å
å
³ç³»ã
ããåæ³å¦ä¸ï¼å°è¯¥å符ä¸è¿ç®ç¬¦æ 顶çè¿ç®ç¬¦çä¼å
å
³ç³»ç¸æ¯è¾ãå¦æï¼è¯¥å符ä¼å
å
³ç³»é«äºæ¤è¿ç®ç¬¦æ 顶çè¿ç®ç¬¦ï¼åå°è¯¥è¿ç®ç¬¦å
¥æ ãåè¥ä¸æ¯çè¯ï¼åå°æ 顶çè¿ç®ç¬¦ä»æ ä¸å¼¹åºï¼ç´å°æ 顶è¿ç®ç¬¦çä¼å
级ä½äºå½åè¿ç®ç¬¦ï¼å°è¯¥å符å
¥æ ã
ãã(5)éå¤ä¸è¿°æä½(3)-(4)ç´è³æ«æå®æ´ä¸ªç®åç®æ¯è¡¨è¾¾å¼ï¼ç¡®å®ææå符é½å¾å°æ£ç¡®å¤çï¼æ们便å¯ä»¥å°ä¸ç¼å¼è¡¨ç¤ºçç®åç®æ¯è¡¨è¾¾å¼è½¬å为éæ³¢å
°è¡¨ç¤ºçç®åç®æ¯è¡¨è¾¾å¼ã
ããä¸é¢æ¯ç¨åºåç®æ³æµç¨ï¼
ãã1ã建ç«è¿ç®ç¬¦æ stackOperatorç¨äºè¿ç®ç¬¦çåå¨ï¼åå
¥'\0'ã
ãã2ãé¢å¤ç表达å¼ï¼æ£ãè´å·åå 0(å¦æä¸ä¸ªå å·ï¼åå·ï¼åºç°å¨æåé¢æå·¦æ¬å·åé¢ï¼å该å å·ï¼åå·ï¼ä¸ºæ£è´å·) ã
ãã3ã顺åºæ«æ表达å¼ï¼å¦æå½åå符æ¯æ°åï¼ä¼å
级为0ç符å·ï¼ï¼åç´æ¥è¾åºè¯¥æ°åï¼å¦æå½åå符为è¿ç®ç¬¦ææ¬å·ï¼ä¼å
级ä¸ä¸º0ç符å·ï¼ï¼åå¤æ第4ç¹ ã
ãã4ãè¥å½åè¿ç®ç¬¦ä¸º'('ï¼ç´æ¥å
¥æ ï¼
ããè¥ä¸º')'ï¼åºæ 并顺åºè¾åºè¿ç®ç¬¦ç´å°éå°ç¬¬ä¸ä¸ª'('ï¼éå°ç第ä¸ä¸ª'('åºæ ä½ä¸è¾åºï¼
ããè¥ä¸ºå
¶å®ï¼æ¯è¾stackOperatoræ 顶å
ç´ ä¸å½åå
ç´ çä¼å
级ï¼
ããå¦æ æ 顶å
ç´ >= å½åå
ç´ ï¼åºæ 并顺åºè¾åºè¿ç®ç¬¦ç´å° æ 顶å
ç´ < å½åå
ç´ ï¼ç¶åå½åå
ç´ å
¥æ ï¼
ããå¦æ æ 顶å
ç´ < å½åå
ç´ ï¼ç´æ¥å
¥æ ã
ãã5ãéå¤ç¬¬3ç¹ç´å°è¡¨è¾¾å¼æ«æå®æ¯ã
ãã6ã顺åºåºæ 并è¾åºè¿ç®ç¬¦ç´å°æ 顶å
ç´ ä¸º'\0'ã
ããåè¿ç®ç¬¦å符å·ä¼å
级ï¼
ãã'\0'ï¼ -1
ãã')'ï¼ 1
ãã'('ï¼ 2
ãã'+'ã'-'ï¼ 3
ãã'*'ã'/'ã'%'ï¼ 4
ãã'^'ï¼ 5
ããå
¶å®ï¼ 0
/**
* 计ç®éæ³¢å
°è¡¨è¾¾å¼çå¼
*/
function calculate(RPolishArray){
var result = 0;
var tempArray = new Array(100);
var tempNum = -1;
for(i = 0;i < RPolishArray.length;i++){
if(RPolishArray[i].match(/\d/)){
tempNum++;
tempArray[tempNum] = RPolishArray[i];
}else{
switch(RPolishArray[i]){
case '+':
result = (tempArray[tempNum-1] *1) + (tempArray[tempNum] * 1);
tempNum--;
tempArray[tempNum] = result;
break;
case '-':
result = (tempArray[tempNum-1] *1) - (tempArray[tempNum] * 1);
tempNum--;
tempArray[tempNum] = result;
break;
case '*':
result = (tempArray[tempNum-1] *1) * (tempArray[tempNum] * 1);
tempNum--;
温馨提示:答案为网友推荐,仅供参考