数据结构(C语言) 栈的应用之括号匹配
Posted wumingoo1
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构(C语言) 栈的应用之括号匹配相关的知识,希望对你有一定的参考价值。
#include<stdio.h> #include<stdlib.h> typedef struct SqStack char str[100]; int top; SqStack; void Push(SqStack* S, char c) S->top++; S->str[S->top] = c; void Pop(SqStack* S, char* c) *c = S->str[S->top]; S->top--; int Empty(SqStack* S) return S->top == -1; void Init(SqStack* S) S->top = -1; char LeftBracket(char right) if (right == ‘)‘) return ‘(‘; else if (right == ‘]‘) return ‘[‘; else if (right == ‘‘) return ‘‘; return 0; int BracketsCheck(char* str) SqStack S; Init(&S); int i = 0; while (str[i] != ‘\0‘) switch (str[i]) case ‘(‘: case ‘[‘: case ‘‘: Push(&S, str[i]); i++; break; case ‘)‘: case ‘]‘: case ‘‘: if (!Empty(&S)) char c; Pop(&S, &c); if (c == LeftBracket(str[i])) i++; else return 0; else return 0; break; default: i++; return Empty(&S); void main() char* str = "[1+2*(5-2)]*4*2+6"; int pass = BracketsCheck(str); if (pass) printf("括号匹配!\n"); else printf("括号不匹配!\n"); getchar();
以上是关于数据结构(C语言) 栈的应用之括号匹配的主要内容,如果未能解决你的问题,请参考以下文章
(王道408考研数据结构)第三章栈和队列-第三节1:栈的应用之括号匹配问题和表达式问题(前缀中缀和后缀)