c語(yǔ)言通過(guò)棧判斷括號(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語(yǔ)言通過(guò)棧判斷括號(hào)匹配是否配對(duì)的文章就介紹到這了,更多相關(guān)c語(yǔ)言判斷是否配對(duì)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
學(xué)生成績(jī)管理系統(tǒng)C語(yǔ)言代碼實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言代碼實(shí)現(xiàn)學(xué)生成績(jī)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01
C語(yǔ)言動(dòng)態(tài)規(guī)劃多種背包問(wèn)題分析講解
背包問(wèn)題(Knapsack problem)是一種組合優(yōu)化的NP完全問(wèn)題。問(wèn)題可以描述為:給定一組物品,每種物品都有自己的重量和價(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)單的分析了下深拷貝和淺拷貝的問(wèn)題。有需要的朋友可以看下2016-12-12
C++面試八股文之STL標(biāo)準(zhǔn)模板庫(kù)使用詳解
這篇文章主要為大家介紹了C++面試八股文之STL標(biāo)準(zhǔn)模板庫(kù)使用詳解,<BR>有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06
淺析string 與char* char[]之間的轉(zhuǎn)換
與char*不同的是,string不一定以NULL('\0')結(jié)束。string長(zhǎng)度可以根據(jù)length()得到,string可以根據(jù)下標(biāo)訪問(wèn)。所以,不能將string直接賦值給char*2013-10-10
詳解C語(yǔ)言實(shí)現(xiàn)空間索引四叉樹(shù)
本文主要介紹了用C語(yǔ)言實(shí)現(xiàn)四叉樹(shù),對(duì)算法感興趣的同學(xué),可以參考下,并且試驗(yàn)一下。2021-05-05
C++實(shí)現(xiàn)假裝藍(lán)屏整蠱小程序
因?yàn)楣ぷ鞯男枰?,有時(shí)候我們離開(kāi)時(shí)并不想讓別人看到我們電腦的內(nèi)容,所以本文為大家分享了一個(gè)基于C++實(shí)現(xiàn)的假裝藍(lán)屏的小程序,需要的可以參考下2023-06-06

