C語言解決堆棧括號匹配問題示例詳解
更新時間:2021年11月18日 11:18:10 作者:xr415
這篇文章主要為大家介紹了C語言堆棧括號匹配問題示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
1.括號匹配問題就是當遇到{( [這些左括號的時 將括號字符入棧
2.當遇到右括號時判斷棧頂元素是不是與左括號匹配如果匹配就出棧
如果不匹配就直接結(jié)束程序(即括號匹配失敗)
首先構(gòu)建棧
struct STACK { char num[10]; int top; }; struct STACK* creatstack() { struct STACK* stack = new struct STACK; assert(stack); stack->top = -1;//0 -1這些根據(jù)直接所習(xí)慣去標記棧頂 -1只是先置加 0后置加 return stack; } void push(struct STACK* stack, char ch) { stack->num[++stack->top] = ch; } void pop(struct STACK* stack) { stack->top--; }
調(diào)用匹配函數(shù)
如果返回true即匹配成功 返回false即匹配失敗
bool Match(struct STACK* stack, char* match) { int len = strlen(match); for (int i = 0; i < len; ++i) { if (match[i] == '{' || match[i] == '[' || match[i] == '(') { push(stack, match[i]); } if (match[i] == '}' ) { if (stack->num[stack->top] == '{') { pop(stack); } else { return false; } } if (match[i] == ')' ) { if (stack->num[stack->top] == '(') { pop(stack); } else { return false; } } if (match[i] == ']' ) { if (stack->num[stack->top] == '[') { pop(stack); } else { return false; } } } if (stack->top == -1) return true; else { return false; } }
代碼調(diào)用
如果是輸出1說明匹配成功 輸出0匹配不成功
int main() { struct STACK* stack = creatstack(); char str[10] = "()[][]{}"; cout << Match(stack ,str)<< endl; }
以上就是C語言堆棧括號匹配問題示例詳解的詳細內(nèi)容,更多關(guān)于C語言堆棧括號匹配的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Win11+?VS2022編譯?FFmpeg6.0?靜態(tài)庫的詳細過程
這篇文章主要介紹了Win11+VS2022編譯FFmpeg6.0靜態(tài)庫的方法,本文通過圖文實例代碼相結(jié)合給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-08-08C++ Qt開發(fā)之CheckBox多選框組件的用法詳解
Qt是一個跨平臺C++圖形界面開發(fā)庫,利用Qt可以快速開發(fā)跨平臺窗體應(yīng)用程序,在Qt中我們可以通過拖拽的方式將不同組件放到指定的位置,實現(xiàn)圖形化開發(fā)極大的方便了開發(fā)效率,本章將重點介紹CheckBox單行輸入框組件的使用方法,需要的朋友可以參考下2023-12-12