問題描述:假設乙個算術表示式中包含圓括號、方括號和花括號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基類庫中已經有了棧 佇列等的實現,直接拿來用用吧。第乙個演算法是用來判斷表示式中的括號 僅限小括號 是否匹配的。其實哥很想找個妹子出去約會啊,...