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

西安网站开发公司排名中国建设银行网站色彩

西安网站开发公司排名,中国建设银行网站色彩,一级造价工程师报名,临沧永德网站建设电子商务公司中缀表达式 中缀表达式(中缀记法)是一个通用的算术或逻辑公式表示方法,操作符是以中缀形式处于操作数的中间(例:3 4),中缀表达式是人们常用的算术表示方法。 前缀或后缀记法不同的是&#xf…

中缀表达式

中缀表达式(中缀记法)是一个通用的算术或逻辑公式表示方法,操作符是以中缀形式处于操作数的中间(例:3 + 4),中缀表达式是人们常用的算术表示方法。

前缀或后缀记法不同的是,中缀记法中括号是必需的。计算过程中必须用括号将操作符和对应的操作数括起来,用于指示运算的次序。

后缀表达式

逆波兰表示法(Reverse Polish notation,RPN,或逆波兰记法),是一种是由波兰数学家扬·武卡谢维奇1920年引入的数学表达式方式,逆波兰记法中,所有操作符置于操作数的后面,因此也被称为后缀表示法。逆波兰记法不需要括号来标识操作符的优先级。

中缀表达式转后缀表达式

中缀转后缀思路

  1. 初始化两个栈:运算符栈S1操作数栈S2
  2. 从左向右扫描中缀表达式
  3. 遇到操作数时,将其压入到操作数栈S2
  4. 遇到运算符时,比较其与运算符栈S1栈顶运算符的优先级
  5. 如果运算符栈S1为空,或栈顶运算符为左括号“ ( ”,或者优先级比栈顶运算符的优先级较高,则直接将此运算符压入栈中
  6. 否则,将运算符栈S1中栈顶的运算符弹入并压到操作数栈S2中,再次进行与运算符栈S1栈顶运算符的优先级比较
  7. 遇到括号时,如果遇到了左括号“ ( ”,则直接压入运算符栈S1
  8. 如果遇到右括号“ ) ”,则依次弹出运算符栈S1栈顶的运算符,并压入操作数栈S2,直到遇到左括号" ( "为止,此时将这一对括号丢弃
  9. 重复步骤2至8,直到表达式的最右边
  10. 运算符栈S1剩余的运算符依次弹出并压入操作数栈S2
  11. 拼接操作数栈S2中的元素并输出,结果即为中缀表达式所对应的后缀表达式

中缀转后缀图示

下图是以9-2*3+(5-2)*2为例子的完整过程。

中缀转后缀流程图

中缀转后缀代码分析

主函数

先初始化一下需要转化为后缀记法的字符串,然后给一个用来存储后缀表达式的数组,假设中缀转后缀的函数为MidtoLast,给这个函数传入中缀表达式的字符数组midstr,以及存储后缀表达式的字符数组laststr:

int main()
{char midstr[] = "9-2*3+(5-2)*2";//中缀表达式printf("中缀表达式为:%s\n", midstr);char laststr[100];//后缀表达式MidtoLast(laststr, midstr);printf("后缀表达式为:%s\n", laststr);return 0;
}

遇到操作数

遍历整个中缀字符串数组,遇到数字字符就直接进行存储,这里我们利用isdigit函数来判断是否数字字符,在下面相关总结的部分,会为大家详细讲解函数的使用方式,这里只先需要知道它的头文件是#include <ctype.h>

for (int i = 0; midstr[i] != '\0';)//i有的情况是不++的
{if (isdigit(midstr[i]))//数字字符直接放到后缀表达式里{laststr[j++] = midstr[i++];}
}

遇到运算符

在遇到运算符的时候:遇到第一个操作符就直接压入栈中,根据优先级来判断是谁先出栈谁后出栈,“*”“/”的优先级高于“+”“-”的优先级:

遇到括号

并且在遇到操作符(不是“)”)想要进栈,并且栈顶是“(”,就直接压入栈中:

for (int i = 0; midstr[i] != '\0';)//i有的情况是不++的
{else if (  top == 0 ||midstr[i] == '(' ||(midstr[i] == '*' || midstr[i] == '/') && (mystack[top - 1] == '+' || mystack[top - 1] == '-') || mystack[top - 1] == '(' && midstr[i] != ')'){mystack[top++] = midstr[i++];}	  
}

出栈

 遇到“)”,并且栈顶元素为“(”,则直接抵消:

for (int i = 0; midstr[i] != '\0';)//i有的情况是不++的
{else if (midstr[i] == ')' && mystack[top - 1] == '(')//直接抵消{i++;top--;}
}

剩余运算符全部出栈

将栈中的剩余元素都全部依次出栈:

else//直接出栈
{laststr[j++] = mystack[--top];
}while (top > 0)
{laststr[j++] = mystack[--top];
}laststr[j] = '\0';//变为字符串

中缀转后缀完整代码

#include <stdio.h>
#include <ctype.h>void MidtoLast(char* laststr, const char* midstr)
{int j = 0;//后缀表达式char mystack[100];//模拟栈int top = 0;//栈顶指针,当前可以存放数据的下标for (int i = 0; midstr[i] != '\0';)//i有的情况是不++的{if (isdigit(midstr[i]))//数字字符直接放到后缀表达式里laststr[j++] = midstr[i++];else if (top == 0 ||midstr[i] == '(' ||(midstr[i] == '*' || midstr[i] == '/') && (mystack[top - 1] == '+' || mystack[top - 1] == '-') ||mystack[top - 1] == '(' && midstr[i] != ')')mystack[top++] = midstr[i++];else if (midstr[i] == ')' && mystack[top - 1] == '(')//直接抵消{i++;top--;}else//直接出栈laststr[j++] = mystack[--top];}while (top > 0){laststr[j++] = mystack[--top];}laststr[j] = '\0';//变为字符串
}int main()
{char midstr[] = "9-2*3+(5-2)*2";//中缀表达式printf("中缀表达式为:%s\n", midstr);char laststr[100];//后缀表达式MidtoLast(laststr, midstr);printf("后缀表达式为:%s\n", laststr);return 0;
}

相关知识点

isdigit函数:

实例:

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main()
{char str[] = "1776ad";int year;if (isdigit(str[0])){year = atoi(str);printf("The year that followed %d was %d.\n", year, year + 1);}return 0;
}

运行结果: 

 

http://www.yayakq.cn/news/814895/

相关文章:

  • app哪个网站开发好太原网站建设设计
  • 做网站的什么公司最好网站备案下来以后怎么做网页
  • 学校网站设计图片互联网优化
  • 做soho 怎么建立网站wordpress mnews主题
  • 白城网站建设wordpress页面结构
  • 合肥网站设计建设一站式网站建设 t云
  • 网站制作平台建设全网营销代运营公司
  • 服务器建网站教程域名是企业的网上商标
  • 电商网站开发报价单wordpress 获取摘要
  • 一般在什么网站上做电子请帖品牌策划方案ppt模板
  • 网页设计模板网站图片湖南长沙特色简介
  • 外贸网站推广收费艺考培训
  • 韩国情侣网站模板网站怎么做百度优化
  • 关于网站开发市问卷调查科技感的网站
  • 网站如何添加统计代码是什么意思网站建设需要什么硬件
  • 没建网站 备案wordpress英文主题哪个好用
  • 广州网站建设公司招聘wordpress 后台加入链接后_网站显示是标签_不是链接
  • 大厂县网站建设或SEO优化学网站开发容易吗
  • 青海省交通建设工程质量监督站网站诸城做网站建设的
  • 成品软件源码网站华强北 网站建设
  • 乐从容桂网站建设汕头站扩建效果图
  • 佛山网站建设wantsun游戏网站如何做
  • 网站建设的书 豆瓣wordpress模板制作兼职
  • 网站一般用什么软件做的广州网站设计开发招聘
  • 怎么建设自己的卡盟网站杭州 做网站
  • 上海高端网站建设定制设置网站标签
  • 网站被k文章修改自贡市建设局网站
  • 摄影看图网站WordPress mip 评论框
  • 绵阳网站建设wordpress w3 total cache
  • 国外网站网页设计网站建设礼品