发布网友 发布时间:2023-10-18 04:35
共2个回答
热心网友 时间:2024-12-05 07:39
太复杂,不需要用堆栈。
给你个我写的代码,用C#写的,思路是遇到左括号模拟入栈,遇到右括号模拟出栈,字符串扫描结束看结果是否为0,正确的应该是0,不为0必然是栈出问题了,也就是括号不成对。这个算法可以检查嵌套括号。
private bool CheckPair(string express)
热心网友 时间:2024-12-05 07:39
pop(&s,e); //这里的e不会带回来字符追答void push(STACK * s,char ch)
{
NODE * pnew;
pnew = (NODE *)malloc(sizeof(NODE)); //每次分配新节点,都要动态分配内存
pnew->a = ch;
pnew->next = s->top; //这里有问题
s->top = pnew;
}
case')':
case']':
case'}':
if(!empty(&s))
{
e=pop(&s,e);
if(!(e == '('&&*p == ')'||e == '['&&*p == ']'||e == '{'&&*p == '}')) //双等号
{
printf("左右括号不匹配!");
exit(-1);
}
}
else
{
printf("缺乏左括号!");
exit(-1);
}
break ; //这里及以下略有调整
default:
break ;
}
p++;
}