元旦三天假,閒著沒事幹,就想著複習一下學資料結構時的那些演算法吧。本來是想用c語言來寫的,無奈啊,三四年沒用c了,基本上忘光光,還是用c#來寫吧,而且.net基類庫中已經有了棧、佇列等的實現,直接拿來用用吧。第乙個演算法是用來判斷表示式中的括號(僅限小括號)是否匹配的。(其實哥很想找個妹子出去約會啊,不想複習神馬演算法啊,可惜的是找不到妹子,哭死)
對於表示式中的括號是否匹配,不能僅僅通過統計左括號'('出現的次數和右括號')'出現的次數是否相等來實現,「a*)b+c(」這樣的表示式中的括號顯然是不匹配的。檢驗括號是否匹配最常見的方法是借助於棧這種資料結構,從左到右逐個字元掃瞄表示式,碰到左括號"("則壓入棧中(push),碰到右括號")"則彈出棧頂元素(pop)如果棧為空,則匹配失敗。字串掃瞄完成後,如果棧為空,則匹配成功,否則匹配失敗。**如下:
public static class algorithmaboutstackstackleftbrackets = new stack();
foreach (char c in expression)
if (c==')')
else}}
return leftbrackets.count == 0;
}}
資料結構表示式
35,15,80,70,20,字尾表達方式 35 15 80 70 20 25 中綴表達方式 35,15,80,70,20 字首表達方式 人的思維方式很容易固定 正如習慣拉10進製。就對2,3,4,8,16 等進製不知所措一樣 人們習慣的運算方式是中綴表示式。而碰到字首,字尾方式。迷茫 其實僅僅是一...
判斷表示式的括號是否對稱
public class kuohao public static boolean iscorrect string reg if bytes i if left right return false char 與 ascii 轉換,只要強制型別轉換就行 public static int chan...
判斷算術表示式中的括號是否匹配
問題描述 假設乙個算術表示式中包含圓括號 方括號和花括號3種型別的括號,編寫乙個演算法來判斷表示式中的括號是否匹配,以字元 作為算術表示式的結束符。解決問題思想 遇見左括號就進棧,遇見右括號就出棧。當括號匹配時上一次進棧和本次出棧的括號肯定配對,所以不需要迴圈依次出棧判斷括號是否配對 此處之前沒有想...