文章目录
括号匹配是数据结构中栈和队列的一个实例应用
1.代码实现
代码如下(示例):
#include <stdio.h>
#define MAXSIZE 10
typedef struct {
char stack[MAXSIZE];
int top;
}SqStack;
void InitStack(SqStack& q) {
q.top = 0;
}
bool StackEmpty(SqStack q) {
if (q.top == 0)
return true;
return false;
}
bool PushStack(SqStack & q,char x) {
q.stack[q.top++] = x;
return true;
}
bool PopStack(SqStack& q,char &y) {
y=q.stack[--q.top];
return true;
}
bool bracketCheck(char str[],int length) {
SqStack q;
InitStack(q);
for (int i = 0; i < length; i++) {
if (str[i] == '[' || str[i] == '{' || str[i] == '(')
PushStack(q, str[i]);
else {
if (StackEmpty(q))
return false;
char y ;
PopStack(q, y);
if (str[i] == ')' && y != '(')
return false;
if (str[i] == '}' && y != '{')
return false;
if (str[i] == ']' && y != '[')
return false;
}
}
return StackEmpty(q);
}
int main() {
char str[MAXSIZE];
str[0] = '(';
str[1] = '[';
str[2] = '{';
str[3] = '}';
str[4] = ']';
str[5] = ')';
if(bracketCheck(str, 6)) printf("OK");
else
printf(" NOT OK");
}