#include <stdio.h>
#define MaxSize 10
typedef struct {
char data[MaxSize];
int top;
} SqStack;
void InitStack(SqStack *s) {
s->top = -1;
}
int Push(SqStack *s, char e) {
if (s->top == MaxSize - 1) return -1;
s->data[++s->top] = e;
return 1;
}
int Pop(SqStack *s, char *e) {
if (s->top == -1) return -1;
*e = s->data[s->top--];
return 1;
}
int Empty(SqStack s) {
return s.top == -1;
}
int bracketCheck(char str[], int length) {
SqStack s;
InitStack(&s);
for (int i = 0; i < length; i++) {
if (str[i] == '(' || str[i] == '[' || str[i] == '{') {
Push(&s, str[i]);
} else {
if (Empty(s)) return -1;
char topElem;
Pop(&s, &topElem);
if (str[i] == ')' && topElem != '(') return -1;
if (str[i] == ']' && topElem != '[') return -1;
if (str[i] == '}' && topElem != '{') return -1;
}
}
return Empty(s);
}
int main() {
char str[] = "{(())[]}";
printf("%i\n", bracketCheck(str, 8));
return 0;
}
栈的应用
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 1. 栈的数据结构 栈是限定仅在表尾进行插入和删除操作的线性表允许插入和删除的一端称为栈顶(Top),另一端称为栈...