在编写代码的时候,经常会用到两种括号:圆括号 “()” 和大括号 “{}” 。不管使用哪种括号,程序编译没有问题的其中一个重要因素就是所使用的括号是否能够匹配上.
在编写程序时,括号可以嵌套,即: “({()})” 这种形式,但 “({)” 或者 “({}” 都不符合要求。
括号匹配项目要求:给出任意搭配的括号,判断是否匹配。
设计思路
编写程序判断括号匹配问题的时候,使用栈结构会很容易:
- 如果碰到的是左圆括号或者左大括号,直接压栈;
- 如果碰到的是右圆括号或者右大括号,就直接和栈顶元素配对:如果匹配,栈顶元素弹栈;反之,括号不匹配;
实现代码
#include <stdio.h>
#include <string.h>
int top = -1;//top变量时刻表示栈顶元素所在位置
void push(char* a, int elem) {
a[++top] = elem;
}
void pop(char* a) {
if (top == -1) {
return;
}
top--;
}
char visit(char* a) {
//调取栈顶元素,不等于弹栈,如果栈为空,为使程序不发生错误,返回空字符
if (top != -1) {
return a[top];
}
else {
return ' ';
}
}
int main() {
int i, length;
char a[