java eval
½ñÌìһͬѧ×ö¶«Î÷ÒªÓÃÕâ¸ö¶«¶«,¾Í°ïËûдÁËÒ»¸ö,ÏÈת»¯³Éºó׺±í´ïʽ,È»ºóÔÙ
¼ÆËã.µ±È»Ò²¿ÉÒÔÖ±½Ó¼ÆËãÖÐ׺±í´ïʽ,¿¼Âǵ½Òª¶àλÊý,¾ÍûÄÇô×ö.
Ö§³Ö¶àλÊýµÄ´øÀ¨ºÅµÄÕûÊýµÄ¼Ó¼õ³Ë³ý.
Java
´úÂë
package
edu.jlu.fuliang;
import
java
.util.ArrayList;
import
java
.util.List;
import
java
.util.Stack;
public
class
Eval
{
public
int
eval
(String exp){
List<String> list = infixExpToPostExp(exp);//ת»¯³Éºó׺±í´ïʽ
return
doEval(list);
//ÕæÕýÇóÖµ
}
//Óöµ½²Ù×÷·ûѹջ£¬Óöµ½±í´ïʽ´Óºó׺±í´ïʽÖе¯³öÁ½¸öÊý£¬¼ÆËã³ö½á¹û£¬Ñ¹Èë¶ÑÕ»
private
int
doEval(List<String> list) {
Stack<String> stack = new
Stack<String>();
String element;
int
n1,n2,result;
try
{
for
(
int
i =
0
; i < list.size();i++){
element = list.get(i);
if
(isOperator(element)){
n1 = Integer.parseInt(stack.pop());
&nb
Ïà¹ØÎĵµ£º
¡¡¡¡inkfishÔ´´£¬ÇëÎðÉÌÒµÐÔÖÊ×ªÔØ£¬×ªÔØÇë×¢Ã÷À´Ô´£¨http://blog.csdn.net/inkfish
£©¡£
¡¡¡¡ÔÚÑ¡ÔñѹËõ¡¢´ò°üËã·¨µÄʱºò£¬²»½ö½öҪѡÔñËã·¨£¬»¹ÐèҪѡÔñÓÃÄĸöʵÏÖÀà¿â£¬²»Í¬µÄʵÏÖÀà¿âʵÏÖЧÂʲ»Í¬£¬Ä¬ÈÏѹËõ±ÈÂʲ»Í¬¡£ÎªÁ˲âÊÔJDK¡¢Ant¡¢commons-compressÔÚĬÈÏÇé¿öϵÄЧÂÊ£¬Éè¼ÆÁËÈçϳÌÐò£º£¨À´Ô´£ºhttp://blog.c ......
»ù±¾Ä£Ê½£º
1. ½Ó¿Úģʽ£ºµ±¶à¸öÀàÌṩ½üËÆµÄ·þÎñµÄʱºò£¬Í¨¹ý½Ó¿Úģʽ£¬²»Í¬µÄ·þÎñÌṩÕßÀàËùÌṩµÄ¹²Í¬µÄ·þÎñ¾Í¿ÉÒÔ±»³éÏó³öÀ´£¬²¢±»ÉùÃ÷Ϊһ¸ö¶ÀÁ¢µÄ½Ó¿Ú¡£ÕâÑù¿Í»§¶ÔÏó¾ÍÄÜÒÔÒ»ÖÖÎÞ·ìµÄ·½Ê½À´Ê¹Óò»Í¬µÄ·þÎñÌṩÀ࣬¶øÎÞÐè½øÐÐÈκθ͝¡£
2. ³éÏóÀàģʽ£º¿ÉÒÔ ......
ÌâÄ¿£ºÇëÓöàÏß³ÌʵÏÖÒ»¸öÉú²úÕßÀàºÍÒ»¸öÏû·ÑÕßÀ࣬Éú²úÕßËæ»úÉú³É20¸ö×Ö·û£¬Ïû·ÑÕß½«×Ö·û´òÓ¡µ½¿ØÖÆÌ¨¡£
class SyncStack{ //ͬ²½¶ÑÕ»Àà
¡¡¡¡¡¡private int index = 0; //¶ÑÕ»Ö¸Õë³õʼֵΪ0
¡¡¡¡¡¡private char []buffer = new char[6]; //¶ÑÕ»ÓÐ6¸ö×Ö·ûµÄ¿Õ¼ä
¡¡¡¡¡¡public synchronized void push(char c){ //¼ÓÉ ......
1
. Õ»(stack)Óë¶Ñ(heap)¶¼ÊÇJavaÓÃÀ´ÔÚRamÖдæ·ÅÊý¾ÝµÄµØ·½¡£ÓëC++²»Í¬£¬Java×Ô¶¯¹ÜÀíÕ»ºÍ¶Ñ£¬³ÌÐòÔ±²»ÄÜÖ±½ÓµØÉèÖÃÕ»»ò¶Ñ¡£
¡¡¡¡2
. Õ»µÄÓÅÊÆÊÇ£¬´æÈ¡ËٶȱȶÑÒª¿ì£¬½ö´ÎÓÚÖ±½ÓλÓÚCPUÖеļĴæÆ÷¡£µ«È±µãÊÇ£¬´æÔÚÕ»ÖеÄÊý¾Ý´óСÓëÉú ......
Õ⼸ÌìÒ»Ö±ÔÚ¸ã¹ØÓÚÓÅÏȼ¶¶ÓÁеÄʵÏÖ,ÒòΪҪ¿¼Âǵ½Ï̵߳ݲȫ,ËùÒÔPriorityQueue¾Í²»ÊÊÓÃÁË¡£Ò»¸ö·Ç³£¼òµ¥µÄʵÏÖ·½
·¨£¬ÄǾÍÊǰÑÓÅÏȼ¶±È½ÏºÃµÄ²åÈëÒ»¸ö¶ÓÁУ¬ÓÅÏȼ¶µÍµÄ²åÈëÁíÒ»¸ö¶ÓÁУ¬È¡ÊýµÄʱºòÏÈÔÚÓÅÏȼ¶¸ßµÄ¶ÓÁÐÉÏÈ¡Êý¡£ÕâÓиöȱµã¾ÍÊÇÈç¹ûÓÅÏȼ¶±ðÔ½¶àµÄ»°£¬¶ÓÁ ......