我正在尝试制作一个检查括号是否平衡的程序。您输入n个要检查的字符串,然后转到下面的函数。第一次通过有效,但是当我在第二个字符串上进行测试时,它会吃掉第一个字符,并说它不平衡。然后在第三次尝试中再次起作用。我不知道怎么了。
struct Stack* pStack = (Stack*) hStack;
Boolean result = FALSE;
char c, left;
c = getchar();
while ((c=getchar()) != EOF && c != '\n')
{
if (c == '{' || c == '(' || c == '[')
{
push(pStack, c);
}
if (c == '}' || c == ')' || c == ']')
{
if(isEmpty(hStack)==TRUE)
{
result = FALSE;
return result;
}
else
{
left = pop(pStack);
printf("left: %c, c: %c\n", left, c);
if ( c == '}' && left == '{') {
result = TRUE;
}
else if (c == ')' && left == '(') {
result = TRUE;
}
else if (c == ']' && left == '[') {
result = TRUE;
}
else {
result = FALSE;
}
}
}
return result;