資料結構題 括號匹配問題

2021-09-21 18:51:31 字數 1161 閱讀 6346

括號匹配問題是棧應用的乙個經典場景,原理比較簡單:

假設表示式中允許包含兩種括號:圓括號和方括號,其嵌入的順序隨意,即([ ] ( ))或[([ ] [ ])]等為正確的格式,[(])或([())或(())]均為不正確的格式。檢驗括號是否匹配的方法可用「期待的急迫程度」這個概念來描述。

由此,在演算法中設定乙個棧,每讀入乙個括號,若是右括號,則或者使置於棧頂的最擊破的期待得以消解,或者是不合法的情況;若是左括號,則作為乙個新的更急迫的期待壓入棧中,自然使原有的在棧中的所有未消解的期待的急迫性都降了一級。另外,在演算法的開始和結束時,棧都應該是空的。

在這裡插入**片#include #include #define stack_init_size 100

#define stack_size_increasement 10

typedef char selement;

typedef structsqstack;

void initstack(sqstack & s)

void push(sqstack & s, selement e)

* s.top++ = e;

}void pop(sqstack & s)

}void bracketmatch(sqstack s)

} else if(c == ')')

} }if(s.top == s.base) printf("match succeed!"); //最後檢查條件

else

printf("match false!");

}int main()

在編寫的過程中,遇到的問題:

1.c語言中沒有引用引數的概念,所以我在 initstack(sqstack & s)函式中這樣寫參數列列是有問題的,最後是通過將.c檔案儲存成.cpp檔案,才允許這麼實現。

2.如果寫成initstack(sqstack s),且儲存成.c檔案,那麼在initstack()函式中對s的操作將不會生效。

資料結構 括號匹配問題

給定乙個字串,其中的字元只包含三種括號 花括號 中括號 圓括號 即它僅由 這六個字元組成。設計演算法,判斷該字串是否有效,即字串中括號是否匹配。括號匹配要求括號必須以正確的順序配對,如 或 等為正確的格式,而 或 或 均為不正確的格式。這個問題可以用棧stack來解決,具體的 如下 pragma o...

C 資料結構 括號匹配問題

translation include include include using namespace std 設定乙個bool型函式對表示式中括號是否正確進行檢查 bool fun string str return false 如果c和當前右括號匹配,返回false if s.empty ret...

資料結構 括號匹配

三種括號形式 輸入一段字串,判斷其括號是否匹配。如下 括號匹配問題 include include include define stack init size 100 define stackincrement 10 define error 0 define true 1 define fals...