c語言通過棧判斷括號(hào)匹配是否配對(duì)
實(shí)現(xiàn)
描述
給定一組括號(hào),判斷是否滿足配對(duì)。
代碼
#include<stdio.h> #include<assert.h> #include<stdlib.h> #define bool char #define true 1 #define MAX_LEN 10 #define false 0 typedef char ElementType; typedef struct Stack { int top; ElementType stackList[MAX_LEN]; } Stack; bool fn(char arr[], int len, Stack* S); bool push(Stack* S, ElementType data); bool pop(Stack* S, ElementType* x); bool intStack(Stack* S); int main() { Stack S; intStack(&S); char brackList[] = {'(', '{','(',')','}','{','}','}' }; printf("%d", fn(brackList, sizeof(brackList) / sizeof(brackList[0]), &S)); } bool fn(char arr[], int len, Stack* S) { for (int i = 0; i < len; i++) { if (arr[i] == '{' || arr[i] == '(') { push(S,arr[i]); printf("%c", arr[i]); } else { if (S->top == 0) { return false; } ElementType topData; pop(S, &topData); if (topData == '(' && arr[i] != ')') { return false; } else if (topData == '{' && arr[i] != '}') { return false; } } } if (S->top == 0) { return true; } return false; } //初始化 bool intStack(Stack* S) { for (int i = 0; i < MAX_LEN; i++) { S->stackList[i] = 0; } S->top = 0; return true; } //入棧 bool push(Stack* S,ElementType data) { S->top++; S->stackList[S->top] = data; return true; } //出棧 bool pop(Stack* S, ElementType *x) { *x = S->stackList[S->top]; S->stackList[S->top] = 0; S->top--; return true; }
到此這篇關(guān)于c語言通過棧判斷括號(hào)匹配是否配對(duì)的文章就介紹到這了,更多相關(guān)c語言判斷是否配對(duì)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
學(xué)生成績(jī)管理系統(tǒng)C語言代碼實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了C語言代碼實(shí)現(xiàn)學(xué)生成績(jī)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01C語言動(dòng)態(tài)規(guī)劃多種背包問題分析講解
背包問題(Knapsack problem)是一種組合優(yōu)化的NP完全問題。問題可以描述為:給定一組物品,每種物品都有自己的重量和價(jià)格,在限定的總重量?jī)?nèi),我們?nèi)绾芜x擇,才能使得物品的總價(jià)格最高2022-04-04詳解C++ 拷貝構(gòu)造函數(shù)和賦值運(yùn)算符
本文主要介紹了拷貝構(gòu)造函數(shù)和賦值運(yùn)算符的區(qū)別,以及在什么時(shí)候調(diào)用拷貝構(gòu)造函數(shù)、什么情況下調(diào)用賦值運(yùn)算符。最后,簡(jiǎn)單的分析了下深拷貝和淺拷貝的問題。有需要的朋友可以看下2016-12-12C++面試八股文之STL標(biāo)準(zhǔn)模板庫使用詳解
這篇文章主要為大家介紹了C++面試八股文之STL標(biāo)準(zhǔn)模板庫使用詳解,<BR>有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06淺析string 與char* char[]之間的轉(zhuǎn)換
與char*不同的是,string不一定以NULL('\0')結(jié)束。string長度可以根據(jù)length()得到,string可以根據(jù)下標(biāo)訪問。所以,不能將string直接賦值給char*2013-10-10C++實(shí)現(xiàn)假裝藍(lán)屏整蠱小程序
因?yàn)楣ぷ鞯男枰?,有時(shí)候我們離開時(shí)并不想讓別人看到我們電腦的內(nèi)容,所以本文為大家分享了一個(gè)基于C++實(shí)現(xiàn)的假裝藍(lán)屏的小程序,需要的可以參考下2023-06-06