文章

8

粉丝

0

获赞

27

访问

930

头像
计算表达式 题解:王道数据结构:一个stack保存运算符,一个stack保存操作数

/*

我的代码写得有点啰嗦,但是很直观便于理解,就是王道数据结构里面的利用了一个栈char_stack保存运算符,一个栈int_stack保存数字的思想

这道题目有一个坑就是对于输入的字符串,比如2+10*9里面,如果按照字符串一个一个读取的话,还是要判断一下是否把两位数字10给都读完,然后再进行拼接

*/

 

#include
#include
#include
#include
using namespace std;

// 处理+/-:在没有括号干扰优先级的情况下,可以清空所有运算符栈
void pop_stack1(stack& char_stack, stack& int_stack, char& ch) {
    while (!char_stack.empty()) {
        char temp = char_stack.top();
        char_stack.pop();

        // 先弹右操作数,后弹左操作数
        int rightnum = int_stack.top();
        int_stack.pop();
        int leftnum = int_stack.top();
        int_stack.pop();

        // 这是所有运算符的计算
        if (temp == '+') int_stack.push(leftnum + rightnum);
...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发