试写一个判别表达式中开、闭括号是否配对出现的算法。
我的实现
#include "../SqStack.h"
#include <iostream>
#include <stdio.h>
bool BracketMatch(char exp[]){
SqStack S;
InitStack(S);
int i = 0;
char op;
while(exp[i]){
if(exp[i] == '(' || exp[i] == '['){
Push(S, exp[i]);
}
if(exp[i] == ']'){
Pop(S, op);
if(op != '[') return false;
}
if(exp[i] == ')'){
Pop(S, op);
if(op != '(') return false;
}
i++;
}
return StackEmpty(S);
}
标答
BOOL BracketCorrespondency(char a[]){
int i=0;
Stack s;
InitStack(s);
ElemType x;
while(a[i]){
switch(a[i]){
case '(':
Push(s,a[i]);
break;
case '[':
Push(s,a[i]);
break;
case ')':
GetTop(s,x);
if(x=='(') Pop(s,x);
else return FALSE;
break;
case ']':
GetTop(s,x);
if(x=='[') Pop(s,x);
else return FALSE;
break;
default:
break;
}
i++;
}