#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct {
char data[100];
int top = -1;
}Stack;
bool isEmpty(Stack s) {
if (s.top == -1) return true;
return false;
}
bool overflow(Stack s) {
if (s.top == 99) return true;
return false;
}
bool push(Stack &s, char pushElem) {
if (overflow(s)) return false;
s.data[++s.top] = pushElem;
return true;
}
bool pop(Stack &s, char &returnPopElem) {
if (isEmpty(s)) return false;
returnPopElem = s.data[s.top--];
return true;
}
bool bracketMatch(char bracketArr[],int arrLen) {
Stack s;
int i;
for (i = 0; i < arrLen; i++) {
//如果是 左括号 全部进栈
if (bracketArr[i] == '[' || bracketArr[i] == '{' || bracketArr[i] == '(') {
push(s, bracketArr[i]);
}
//如果是 右括号 与出栈元素作比较
else {
char temp;
pop(s, temp);
//如果匹配就什么都不做
if (temp == '[' && bracketArr[i] == ']'){}
else if(temp == '{' && bracketArr[i] == '}'){}
else if(temp == '('&& bracketArr[i] == ')'){}
else {
return false;
}
}
}
if (i == arrLen) return true;
return false;
}
int main() {
char a[7] = { '{','[','(',')',']','}',')' };
printf("%d", bracketMatch(a, 7));
getchar();
}
5 (栈的应用)括号匹配
最新推荐文章于 2025-08-07 16:09:21 发布
1880

被折叠的 条评论
为什么被折叠?



