用C语言如何实现判断圆括号是否配对?

如题所述

如果只有圆括号(没有[ ] 或 { }),不需要构造一个栈。因为用栈实现时,栈里装的都是一模一样的左括号 '(' ,因此我们只需定义一个 整型变量 来记录 栈中元素的个数 即可。具体代码如下:

#include <stdio.h>

int main (void)
{
char input = 0;
int num = 0; /* 不用栈,只记录栈中元素的个数,初始化为0 */

while (1 == scanf ("%c", &input)) /* 读入字符串,每次读一个字符存入 input 中 */
{
if ('(' == input)
{
++num; /* 相当于把左括号压栈 */
}
if (')' == input)
{
--num; /* 相当于遇到右括号时弹栈 */
}
if (0 > num)
{
printf ("括号不匹配\n");
return 0;
}
}

if (0 == num) /* 读完字符串后判断“栈”是否为空 */
{
printf ("括号匹配\n");
}
else
{
printf ("括号不匹配\n");
}

return 0;
}
温馨提示:答案为网友推荐,仅供参考