判斷算術表示式中的括號是否匹配

2021-09-24 21:35:17 字數 854 閱讀 9436

問題描述:假設乙個算術表示式中包含圓括號、方括號和花括號3種型別的括號,編寫乙個演算法來判斷表示式中的括號是否匹配,以字元「#」作為算術表示式的結束符。

解決問題思想:遇見左括號就進棧,遇見右括號就出棧。當括號匹配時上一次進棧和本次出棧的括號肯定配對,所以不需要迴圈依次出棧判斷括號是否配對(此處之前沒有想到,導致在出棧時還用了依次迴圈來判斷是否配對,這樣做會導致演算法時間複雜度增加);如果不配對,則算術表示式的括號肯定不配對。

**:

#include#include#includeusing namespace std;

typedef char element;

typedef struct stackstack;

bool isempty(stack s)

void push(stack &s,element data)

void pop(stack &s,element &data)

}int judge_bracket(element *str)':

if (data != '

count++;

} if (isempty(s) != true)

return 0;

else

return 1;

}int main()

system("pause");

return 0;

}

執行結果:

常見演算法題 判斷表示式括號是否匹配

題目 設計乙個演算法,判斷使用者輸入的表示式中括號是否匹配,表示式中可能含有圓括號 中括號和大括號。思路 建立乙個順序棧,當表示式中有左括號時將其入棧,當出現右括號時,將棧頂元素出棧,檢查與當前右括號是否匹配。最後如果棧為空則表示該表示式中的括號是匹配的。include include using ...

判斷表示式的括號是否對稱

public class kuohao public static boolean iscorrect string reg if bytes i if left right return false char 與 ascii 轉換,只要強制型別轉換就行 public static int chan...

資料結構演算法 判斷表示式中的括號是否匹配

元旦三天假,閒著沒事幹,就想著複習一下學資料結構時的那些演算法吧。本來是想用c語言來寫的,無奈啊,三四年沒用c了,基本上忘光光,還是用c 來寫吧,而且.net基類庫中已經有了棧 佇列等的實現,直接拿來用用吧。第乙個演算法是用來判斷表示式中的括號 僅限小括號 是否匹配的。其實哥很想找個妹子出去約會啊,...