ZBLOG

#include #include // 定义栈结构 typedef struct { int top; char* items; } Stack; // 初始化栈 Stack* initStack(int capacity) { Stack* stack = (Stack*)malloc(sizeof(Stack)); stack->top = -1; stack->items = (char*)mal...

代码看起来没有明显的错误。但是在使用fgets()函数读取输入时,需要注意字符串最后会包含换行符 \n,可能会影响后续处理逻辑。你可以尝试使用scanf()函数代替fgets()来读取表达式,如下所示:

printf("请输入中缀表达式:");
scanf("%[^\n]", expression);

这样可以避免将换行符读入表达式。

此外,在进行运算符优先级比较时,应该考虑到操作数栈为空的情况。你可以修改 precedence() 函数如下:

int precedence(char op1, char op2) {
    if (op1 == '(' || op2 == '(')
        return -1;
    
    if (op2 == ')')
        return 1;
    
    if ((op1 == '*' || op1 == '/') && (op2 == '+' || op2 == '-'))
        return -1;

    if ((op1 == '+' || op1 == '-') && (op2 == '*' || op2 == '/'))
        return 1;

    return 0; // 相等优先级情况下也返回0
}

这样做能够更准确地判断运算符的优先级关系。

如果还有其他问题,请随时提问!


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=8807

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?