資料結構中用C 實現「表示式計算」

2021-04-17 10:35:13 字數 1684 閱讀 4898

最近重新翻起以前學的資料結構,原來是用c寫的,今天用c#重新回溫一下,加深一點印象.

目前還不支援單目操作符,只支援雙目的,以後改進吧.:)

using system;

using system.drawing;

using system.collections;

using system.componentmodel;

using system.windows.forms;

using system.data;

namespace expression1

///

/// 清理所有正在使用的資源。

///

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 重新回溫一下,加深一點印象.目前還不支援單目操作符,只支援雙目的,以後改進吧.清理所有正在使用的資源。protected override void dispose bool disposing base.dispose disposing region windows 窗體設計器生成的 設計...

資料結構 表示式計算

表示式求值時資料結構的基礎演算法之一,其主要思想就是堆疊的使用。下面將詳細的介紹演算法的各個部分 表示式求值演算法主要流程如下 首先要說明的是字尾表示式,字尾表示式即 不包含括號,運算子放在兩個運算物件的後面,所有的計算按運算子出現的順序,嚴格從左向右進行 不再考慮運算子的優先規則,如 2 1 3 ...

棧實現表示式計算 資料結構

思路 所包含的運算子有 1 建立兩個棧,乙個用來儲存運算元,另乙個用來儲存運算子,開始時在運算子棧中先壓入 0 乙個表示式的結束符。2 然後從左至右依次讀取表示式中的各個符號 運算元或者運算子 3 如果讀到的是運算元直接存入運算元棧 4 如果讀到的是運算子,則作進一步判斷 若讀到的是 0 結束符,而...