棧實現字串表示式計算

2021-04-01 01:00:39 字數 1762 閱讀 1677

最近頻繁解決計算方面的問題,其中就有實現字串表示式計算返回結果值需求,通過使用棧實現,需要定義運算符號優先順序,其它就不細說,**如下:

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.計算字尾的值 遍歷...