当前位置: 首页 > wzjs >正文

个人可以备案什么网站链接交换公司

个人可以备案什么网站,链接交换公司,进行网站建设视频,微信短网址生成表达式求值 - OI Wiki 只含左结合的二元运算符的含括号表达式: 创建一个操作栈op, 数字栈st, 遍历整个表达式 若 1.左括号, 直接入op栈 2.右括号, 从栈顶一个一个拿出op进行计算, 知道遇见左括号 3.如果是数字, 直接入st栈 4.如果是操作符, 当栈顶操作符优先级大于等于当…

 

表达式求值 - OI Wiki

只含左结合的二元运算符的含括号表达式:

创建一个操作栈op, 数字栈st, 遍历整个表达式 若

1.左括号, 直接入op栈

2.右括号, 从栈顶一个一个拿出op进行计算, 知道遇见左括号

3.如果是数字, 直接入st栈

4.如果是操作符, 当栈顶操作符优先级大于等于当前运算符优先级时, 把op栈栈顶操作符一个一个拿出来运算

也可以用这个代码来输出后缀表达式, 遇到数字, 直接加入后缀表达式字符串, 对于操作符, 加入后缀表达式即为上述计算操作

如果加上一元运算符与右结合的运算符

如果是一元运算符, 可以加上一个is_single字段, 操作之后一直改变这个字段的值, 来判断这个运算符是否为一元运算符

如果由有右结合的运算符, 比如幂操作,  把

while (!op.empty() && priority(op.top()) >= priority(cur_op)) 

 改为

while (!op.empty() &&((left_assoc(cur_op) && priority(op.top()) >= priority(cur_op)) ||(!left_assoc(cur_op) && priority(op.top()) > priority(cur_op))))

 即 如果是右运算符  把"当栈顶操作符优先级大于等于当前运算符优先级时, 把op栈栈顶操作符一个一个拿出来运算" 改为大于而不是大于等于

代码

bool delim(char c) { return c == ' '; }bool is_op(char c) { return c == '+' || c == '-' || c == '*' || c == '/'; }int priority(char op) {if (op == '+' || op == '-') return 1;if (op == '*' || op == '/') return 2;return -1;   //这一句是必要的, 会把括号的优先级返回为-1
}void process_op(stack<int>& st, char op) {  // 也可以用于计算后缀表达式int r = st.top();                         // 取出栈顶元素,注意顺序st.pop();int l = st.top();st.pop();switch (op) {case '+':st.push(l + r);break;case '-':st.push(l - r);break;case '*':st.push(l * r);break;case '/':st.push(l / r);break;}
}int evaluate(string& s) {  // 也可以改造为中缀表达式转换后缀表达式stack<int> st;stack<char> op;for (int i = 0; i < (int)s.size(); i++) {if (delim(s[i])) continue;if (s[i] == '(') {op.push('(');  } else if (s[i] == ')') { while (op.top() != '(') {process_op(st, op.top());op.pop();  }op.pop();                } else if (is_op(s[i])) {  char cur_op = s[i];while (!op.empty() && priority(op.top()) >= priority(cur_op)) {process_op(st, op.top());op.pop(); }op.push(cur_op);  } else {            int number = 0;while (i < (int)s.size() && isalnum(s[i]))number = number * 10 + s[i++] - '0';--i;st.push(number);}}while (!op.empty()) {process_op(st, op.top());op.pop();}return st.top();
}

求后缀表达式

bool delim(char c) {return c == ' ';
}bool is_op(char c) {return c == '+' || c == '-' || c == '*' || c == '/';
}int priority(char op) {if (op == '+' || op == '-') return 1;if (op == '*' || op == '/') return 2;return -1; // 用于处理括号等非运算符
}string to_postfix(const string& infix) {string postfix_expr; stack<char> op_stack;   for (int i = 0; i < infix.size(); ++i) {// 跳过空格if (delim(infix[i])) {continue;}// 如果是数字,直接追加到结果字符串if (isdigit(infix[i])) {// 处理多位数while (i < infix.size() && isdigit(infix[i])) {postfix_expr += infix[i++];}--i; // 循环的i++会多加一次,这里回退postfix_expr += ' '; }else if (infix[i] == '(') {op_stack.push('(');}// else if (infix[i] == ')') {while (!op_stack.empty() && op_stack.top() != '(') {postfix_expr += op_stack.top();postfix_expr += ' ';op_stack.pop();}if (!op_stack.empty()) {op_stack.pop(); }}else if (is_op(infix[i])) {char current_op = infix[i];while (!op_stack.empty() && priority(op_stack.top()) >= priority(current_op)) {postfix_expr += op_stack.top();postfix_expr += ' ';op_stack.pop();}op_stack.push(current_op);}}while (!op_stack.empty()) {postfix_expr += op_stack.top();postfix_expr += ' ';op_stack.pop();}if (!postfix_expr.empty()) {postfix_expr.pop_back();}return postfix_expr;
}

http://www.dtcms.com/wzjs/96698.html

相关文章:

  • 免费自助建网站软件外链链接平台
  • 做word文档什么网站好武威网站seo
  • 做网站如何配置自己的电脑百度手机浏览器
  • 怎么做最简单的网站优化公司排行榜
  • 大淘客cms网站怎么做最大免费发布平台
  • pa66用途障车做网站百度广告怎么投放多少钱
  • 如何用ps做网站网页网络营销推广的渠道有哪些
  • 香港网站域名申请朋友圈广告投放
  • 做外贸网站多少钱google推广有效果吗
  • 营销网站seo推广费用网络推广吧
  • 做百度网站排名软件百度seo如何快速排名
  • dw旅游网站怎么做企业营销管理
  • 做微商卖产品在哪个网站销量能好点百度站长平台快速收录
  • 哪个彩票网站做代理反水高服装品牌营销策划方案
  • 中国航天空间站最新消息谷歌chrome浏览器下载
  • 国外服务器做视频网站购物网站页面设计
  • discuz网站同步网站推广软件下载安装免费
  • 做网站推广需要做什么站内推广的方法
  • 兰州论坛网站建设中国广告公司前十强
  • 建设厅网站上企业登录长沙网站制作公司哪家好
  • 南通市通州建设局网站2345网址导航官网下载安装
  • 做网站策划书吧湖南关键词网络科技有限公司
  • 清城网站seo自己做一个网站要多少钱
  • 做网站需要知道什么软件大数据分析培训机构
  • 加粉网站开发seo学校
  • 网站开元棋牌怎么做app蜘蛛搜索引擎
  • 高端建网站多少钱seo顾问是什么
  • 网站脑图用什么做霸榜seo
  • 营销型网站网站设计宁波seo网络推广选哪家
  • 网站漏洞解决办法百度关键词首页排名服务