小工具知识网

当前位置: 首页 > 行业知识 > 【编译原理】逆波兰式的产生及计算:C/C++实现

行业知识

【编译原理】逆波兰式的产生及计算:C/C++实现

2026-11-07 15:01:52 来源:互联网转载


墨香寄清辞:空谷幽篁风动,梦中仙鹤月明。 辗转千秋豪情在,乘风翱翔志不移。

目录

1. 编译原理之逆波兰式的产生及计算概念

1.1 编译原理

1.2 逆波兰式的产生及计算

2.1 实验目的

2.2 实验要求

2.2.1 算法流程图

2.2.2 参考代码(不完整)

2.3 实验内容

2.3.1 实验解决代码

2.3.2 程序分析

2.4 实验心得


1. 编译原理之逆波兰式的产生及计算概念

1.1 编译原理

编译原理是计算机科学领域的一个重要分支,它研究如何将高级编程语言的源代码转化成计算机能够执行的机器代码或中间代码的过程。编译原理涵盖了编译器的设计和实现,其中编译器是一种将源代码翻译成目标代码的软件工具。编译器的主要任务包括语法分析、词法分析、语义分析、优化和代码生成等环节。

1.2 逆波兰式的产生及计算

逆波兰式(Reverse Polish Notation,RPN),也称为后缀表达式,是一种用于表示数学表达式的形式,其特点是操作符位于与之相关的操作数之后。相比传统的中缀表达式,逆波兰式更容易被计算机程序理解和处理。

资源获取:关注公众号【科创视野】回复  逆波兰式源码

相关博文:编译原理之LR(1)分析法:C/C++实现(附源码+详解!)


​​​​​2. 逆波兰式的产生及计算

2.1 实验目的

(1)使用中缀式表示的算术表达式转换为用逆波兰式表示的算术表达式;

(2)计算用逆波兰式来表示的算术表达式的值。


2.2 实验要求

如输入

21+((42-2)*15+6 )-18#

则输出为:

原来表达式: 21+((42-2)*15+6  )- 18#         后缀表达式:21&42&2&-15&*6&++18&-         计算结果:609

2.2.1 算法流程图

​

​


2.2.2 参考程序代码

参考代码(不完整):

逆波兰式生成:while(ch!='#')      {switch(ch)  { case '(':top++;stack[top]=ch; break;    case ')':while(stack[top]!='('){ ex[t]=stack[top];top--;t++;}     top--;     break;    case '+':    case '-':    while(top!=0&&stack[top]!='(')      { ex[t]=stack[top];top--;t++;}top++;stack[top]=ch;break;    case '*':    case '/':    while(stack[top]=='*'||stack[top]=='/')      { ex[t]=stack[top];top--;t++;}top++;stack[top]=ch;break;    case ' ':break;    default:    while(ch>='0'&&ch='0'&&ch

上一篇:物联网怎么选择服务器设置?

下一篇:宝塔面板Java环境安装详解