假设表达式中只允许两种括号:()、{};
正确表达顺序为:()或{}或({})或{({}{})}的形势;如{(}或(})或({)}的表达形势均不对。
算法的设计思想:
出现左括弧则进栈;
出现右括弧则首先检测栈是否为空,
若栈空则表明此右括弧多余,表达式不匹配。
否则和栈顶数据比较,若匹配则栈顶出栈。
否则表明表达式不匹配;
最后若栈空且没有做鱼右括弧则匹配正确,否则表明不匹配。
实现代码如下(Stack.h头文件为之前写的数据结构-栈的顺序结构中写的数组那个方法,用到了里面栈的结构和连个基本栈操作)
1 void Matching(char e[]) 2 { 3 Stack S; 4 InitStack(S); 5 unsigned int i = 0, state = 1; 6 char z; 7 while((int)(i <= strlen(e)) && state && e[i] != '