用c#重新回溫一下,加深一點印象.
目前還不支援單目操作符,只支援雙目的,以後改進吧.:)
/// 清理所有正在使用的資源。
///
protected override void dispose( bool disposing )
}base.dispose( disposing );
}#region windows 窗體設計器生成的**
///
/// 設計器支援所需的方法 - 不要使用**編輯器修改
/// 此方法的內容。
///
private void initializecomponent()
#endregion
///
/// 應用程式的主入口點。
///
private void btnpostfix_click(object sender, system.eventargs e)
catch(expressception ex)
}private void btncalc_click(object sender, system.eventargs e)
catch(expressception ex)}}
public class calculator
public double run()
else
}return (double)s.pop();
}private bool isnumber(string str)
else
}private void addoperands(double val)
private bool get2operands(out double left,out double right)
catch(invalidoperationexception)
return true;
}private void dooperator(string op)
else
s.push(left/right);
break;
case "^":
s.push(math.pow(left,right));
break;
}else
s.clear();
}public string postfix()
else
isnum=false;
if(c == ')')
else}}
return str1.substring(0,str1.length-1);
}private int isp(char c)
return k;
}private int icp(char c)
return k;
}public class expressception : exception}
資料結構中用C 實現「表示式計算」
最近重新翻起以前學的資料結構,原來是用c寫的,今天用c 重新回溫一下,加深一點印象.目前還不支援單目操作符,只支援雙目的,以後改進吧.using system using system.drawing using system.collections using system.componentmo...
資料結構 表示式計算
表示式求值時資料結構的基礎演算法之一,其主要思想就是堆疊的使用。下面將詳細的介紹演算法的各個部分 表示式求值演算法主要流程如下 首先要說明的是字尾表示式,字尾表示式即 不包含括號,運算子放在兩個運算物件的後面,所有的計算按運算子出現的順序,嚴格從左向右進行 不再考慮運算子的優先規則,如 2 1 3 ...
棧實現表示式計算 資料結構
思路 所包含的運算子有 1 建立兩個棧,乙個用來儲存運算元,另乙個用來儲存運算子,開始時在運算子棧中先壓入 0 乙個表示式的結束符。2 然後從左至右依次讀取表示式中的各個符號 運算元或者運算子 3 如果讀到的是運算元直接存入運算元棧 4 如果讀到的是運算子,則作進一步判斷 若讀到的是 0 結束符,而...