最近頻繁解決計算方面的問題,其中就有實現字串表示式計算返回結果值需求,通過使用棧實現,需要定義運算符號優先順序,其它就不細說,**如下:
csstack.cs:
using system;
namespace pyhb
///
/// 設定棧大最大容量
///
///
public void initialize(int size)
///
/// 入棧
///
///
public void push(string stritem)
}///
/// 出棧
///
///
public string pop()
return strrtn;
}public string gettop()
return strrtn;
}public bool isfull()
public void makeemptly()
public bool isemptly()}}
calculate.cs
using system;
using system.text;
using system.windows.forms;
namespace pyhb
///
/// 根據數字表示式字串陣列,返回計算結果字元陣列
///
/// strsour 中綴表示式字串,頭部沒有「#」,尾部需要加上「#」
/// 計算結果
public string run(string strsoure)
string drtn=new string[strsoure.length];
for(int k=0;k
/// run 返回字尾表示式
/// strsour 中綴表示式字串,頭部沒有「#」,尾部需要加上「#」
/// string 字尾表示式字串,頭尾都沒有「#」
///
///
///
private string getrpn(string strsource)
while(getisp(y) > geticp(atemp[k]));
s.push(y);
s.push(atemp[k]);}}
}do
while(y!="#");
}catch{}
return strrpn;
}#region 運算子優先順序定義
private enum isp
private enum icp
private int getisp(string a1)
}private int geticp(string a1)
}#endregion
///
/// 判斷是否存在左右數字,並且複製
///
/// 左數值
/// 右的數值
/// 是否成功
private bool gettwoitem(ref decimal dleft,ref decimal dright)
catch
return brtn;
}///
/// 根據運算符號計算,並且把計算結果以字元形式填充入棧
///
///
private void dooperate(string op)}}
利用棧實現字串表示式計算
棧的基本機構 1 棧典型的結構,先進者後出,後進者先出,從操作特性上來看,棧是一種 操作受限 的線性表,只允許在一端插入和刪除資料。2 用陣列實現的棧叫做順序棧,用鍊錶實現的棧,我們叫做鏈式棧 棧的簡單實現 基於陣列實現的順序棧 public class arraystack else if ch ...
棧的應用 計算字串表示式
計算機的本質工作就是做數 算 那計算機可以讀 入字串 1 2 3 4 5 6 7 並計算值嗎?答案是肯定的。這裡我基本實現了個位數的加減乘除,當然這個演算法最簡單的解決方式是採用二叉樹 後面會實現 這裡作出了棧的實現方式。首先引入兩個概念 中綴表示式和字尾表示式 1,在生活中我們通常書寫1 1的時候...
棧的應用 計算字串表示式
1.通過棧來實現字串公式的運算 2.中綴轉字尾 遍歷中綴表示式中的數字和符號 對於數字 直接輸出 對於符號 左括號 進棧 符號 與棧頂符號進行優先順序比較 棧頂符號的優先順序低 符號進棧 棧頂符號的優先順序高 將棧頂符號彈出並輸出,之後進棧 右括號 將棧中的所有符號彈出並輸出 3.計算字尾的值 遍歷...