<分区>
为什么它不打印“Paranthesis are balanced”。每当我传递像“(2+4)”这样的平衡括号时,它就会崩溃。每当我传递像“((3+4()”这样的不平衡括号时,它就会完美运行。这是我的代码。
struct stackADT {
int count;
char data[50];
} s;
bool Is_Equal(char b, char c){
if(b == '(' && c == ')')
return true;
if(b == '{' && c == '}')
return true;
if(b == '[' && c == ']')
return true;
else{
return false;
}
}
bool pop(struct stackADT *s, int *num) {
if (Is_Empty())
return false;
else {
*num = s->data[(s->count) -1];
(s->count)--;
return true;
}
}
int main(void) {
char expression[100];
int i, len;
initialize();
printf("Enter an expression: ");
scanf("%s", &expression);
len = strlen(expression);
for(i = 0; i < len; i++){
if(expression[i] == '(' || expression[i] == '{' || expression[i] == '['){
push(expression[i]);
}
if(expression[i] == ')' || expression[i] == '}' || expression[i] == ']'){
pop(&s,expression[i]);
}
}
if(Is_Equal(pop(&s, expression[i]), expression[i]))
printf("Parenthesis are balanced\n");
else{
printf("Parenthesis are unbalanced\n");
}
return 0;
getch();
}