如题所述
第1个回答 2022-12-11
如果只有圆括号(没有[ ] 或 { }),不需要构造一个栈。因为用栈实现时,栈里装的都是一模一样的左括号 '(,因此我们只需定义一个 整型变量 来记录 栈中元素的个数 即可。具体代码如下:\x0d\x0a\x0d\x0a#include \x0d\x0a\x0d\x0aint main (void)\x0d\x0a{\x0d\x0a char input = 0; \x0d\x0a int num = 0; /* 不用栈,只记录栈中元素的个数,初始化为0 */\x0d\x0a\x0d\x0a while (1 == scanf ("%c", &input)) /* 读入字符串,每次读一个字符存入 input 中 */\x0d\x0a {\x0d\x0a if ('(== input)\x0d\x0a {\x0d\x0a ++num; /* 相当于把左括号压栈 */\x0d\x0a }\x0d\x0a if (')== input)\x0d\x0a {\x0d\x0a --num; /* 相当于遇到右括号时弹栈 */\x0d\x0a }\x0d\x0a if (0 > num)\x0d\x0a {\x0d\x0a printf ("括号不匹配\n");\x0d\x0a return 0;\x0d\x0a }\x0d\x0a }\x0d\x0a\x0d\x0a if (0 == num) /* 读完字符串后判断“栈”是否为空 */\x0d\x0a {\x0d\x0a printf ("括号匹配\n");\x0d\x0a }\x0d\x0a else\x0d\x0a {\x0d\x0a printf ("括号不匹配\n");\x0d\x0a }\x0d\x0a\x0d\x0a return 0;\x0d\x0a}