// 检查字符串 str 是否全部是全括号 '(', ')', '[', ']', '{', 或 '}'。
int allParenthesis(char *str) {
int i;
for (i=0; i<strlen(str); i++)
if (!(str[i]=='(' || str[i]==')' ||
str[i]=='[' || str[i]==']' ||
str[i]=='{' || str[i]=='}')) return 0;
return 1;
}
// 检查两个字符是否匹配。
int isMatching(char e, char c) {
return (e=='(' && c==')') || (e=='[' && c==']') || (e=='{' && c=='}'); }
int parenthesisMatching(char *str) {
Stack S;
char e;
int matching = 1;
int i;
initial(&S);
for (i=0; i<strlen(str) && matching; i++) {
if (str[i]=='(' || str[i]=='[' || str[i]=='{')
push(&S, str[i]);
else {
e = pop(&S);
if (!isMatching(e, str[i])) matching = 0;
}
}
if (matching==1 && is_empty(S)) matching = 1;
else matching = 0;
clear(&S);
return matching;
}