使用一元/二元运算符进行后缀中缀

2024-03-18

我正在尝试制作一个从后缀到中缀表示法的转换器,并且需要一些帮助。已经有关于中缀到后缀转换的问题 https://stackoverflow.com/questions/2431863/infix-to-postfix-and-unary-binary-operators,这给出了一个我无法转换回来的例子。 (注意:那里缺少一个减号!)

以下是我的转换器的输出,其中第一个“列”是后缀输入,第二个是我的中缀输出,第三个是我可能应该得到的(?):

2 -                      =   - 2                           =?    - 2                       true
1 + 2 +                  =   + 1 + 2                       =?    + 1 + 2                   true
1 + 2 + +                =   + (+ 1 + 2)                   =?    + 1 + + 2                 false
1 + 2 + + 3 - - 4 - -    =   - (- (+ (+ 1 + 2) - 3) - 4)   =?    + 1 + + 2 - - 3 - - 4     false

你认为这个问题有可能解决吗,或者最后两行实际上转换正确了?你会如何编写算法来解决这个问题?

请假设有更多的运营商(不仅+ and -) 可以设置为一元和二元,其中一元运算符的优先级高于二元运算符。

参考

  1. Ruby 测验 #148:后缀到中缀 http://www.rubyquiz.com/quiz148.html,也通过谷歌网上论坛 http://groups.google.com/group/comp.lang.ruby/browse_frm/thread/1fc1b43a91b6ceed
  2. 支持一元运算符的调车场算法(C、Python、Perl) http://en.literateprograms.org/Shunting_yard_algorithm_(Perl)关于识字计划

后缀表示法没有优先级的概念,因为任何运算符的操作数始终是堆栈上的前 N ​​个值(然后由运算符的结果替换)。

后缀表示法的一个问题是它不能很好地处理可以根据操作数数量引用不同运算符的运算符符号(例如 -,它可以表示一元或二进制减号)。解决这个问题的唯一方法是确保每个运算符都有一个唯一的符号来代表它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用一元/二元运算符进行后缀中缀 的相关文章

  • 调用许多网络服务的最佳方式?

    我有 30 家子公司 每家都实施了他们的 Web 服务 使用不同的技术 我需要实现一个Web服务来聚合它们 例如 所有子公司的Web服务都有一个名为的Web方法GetUserPoint int nationalCode 我需要实现我的网络服
  • Nullable 是不可能的,为什么不呢? [复制]

    这个问题在这里已经有答案了 如果这是一个愚蠢的问题 请原谅 我正在尝试更好地理解 Net 中的 Nullable 类型 从我从 Microsoft 源代码 使用 ReSharper 中注意到的内容 我了解到 Nullable 是一个结构 而
  • EventHandler 应该始终用于事件吗?

    我一直在愉快地使用自定义委托类型和通用编写事件Action委托类型 没有真正考虑我在做什么 我有一些很好的扩展助手Action and EventHandler这使我倾向于使用那些预定义的委托类型而不是我自己的委托类型 但除此之外 除了惯例
  • 从另一个 FORM 中取回隐藏的 FORM

    我有两种形式Form1 and Form2 我正在打开Form2 from Form1 on button Click Form2 obj2 new Form2 this Visible false obj2 Show 然后我想回来Form
  • .pdbs 会减慢发布应用程序的速度吗?

    如果 dll 中包含 pdb 程序调试 文件 则行号将出现在引发的任何异常的堆栈跟踪中 这会影响应用程序的性能吗 这个问题与发布与调试 即优化 无关 这是关于拥有 pdb 文件的性能影响 每次抛出异常时都会读取 pdb 文件吗 加载程序集时
  • libtool 在 Ubuntu 13.04 上构建 thrift 0.9.1 时出错

    在 Ubuntu 13 04 上构建 thrift 0 9 1 支持 C C java C perl python 时出现此错误 configure 不带任何选项运行 make 不带任何选项运行 Making all in test mak
  • C# Outlook 从收件人获取 CompanyName 属性

    我目前正在使用 C 编写 Outlook 2010 AddIn 我想要的是从我从 AppointmentItem 中提取的 Recipient 对象中获取 CompanyName 属性 因此 有了 AppointmentItem 的收件人
  • MSMQ接收和删除

    是否有任何选项可以在读取消息后将其从 MSMQ 中删除 比如 接收 删除可以作为原子操作运行吗 听起来您想查看下一条消息 然后在处理完成后接收它 Message message Queue Peek Queue ReceiveById me
  • 如何调试在发布版本中优化的变量

    我用的是VS2010 我的调试版本工作正常 但我的发布版本不断崩溃 因此 在发布版本模式下 我右键单击该项目 选择 调试 然后选择 启动新实例 此时我看到我声明的一个数组 int ma 4 1 2 8 4 永远不会被初始化 关于可能发生的事
  • 名称查找、实例化点 (POI) 和基本类型

    以下代码针对 X 进行编译 但不适用于 double struct X void foo double void foo X namespace NN struct A void foo A foo double error foo not
  • “没有合适的默认构造函数可用”——为什么会调用默认构造函数?

    我已经查看了与此相关的其他一些问题 但我不明白为什么在我的情况下甚至应该调用默认构造函数 我可以只提供一个默认构造函数 但我想了解它为什么这样做以及它会产生什么影响 error C2512 CubeGeometry no appropria
  • 如果在代码中添加元素,“FindName”将不起作用

    在 WPF 应用程序中 如果在 XAML 中声明 ContentControl
  • 如何使用 C# 查询远程 MS ACCESS .mdb 数据库

    我正在尝试使用 C 查询 mote MS ACCESS 数据库 mdb 文件 将文件复制到本地计算机时可以成功查询它 我只想远程放置文件 所以我的客户端程序不包含原始数据 static string m path http www xyz
  • 如何在 EF Core 2.1 中定义外键关系

    我的 DAL 使用 EF Core 2 1 这就是我的模型的样子 一名用户只能拥有一种角色 Role entity kind of master public class Role public int RoleId get set pub
  • MSChart 控件中的自定义 X/Y 网格线

    我有一个带有简单 2D 折线图的 C Windows 窗体 我想向其中添加自定义 X 或 Y 轴标记 并绘制自定义网格线 例如 以突出显示的颜色 虚线 我查看了 customLabels 属性 但这似乎覆盖了我仍然想显示的默认网格 这是为了
  • 使用 Unity 在 C# 中发送 http 请求

    如何使用 Unity 在 C 中发送 HTTP GET 和 POST 请求 我想要的是 在post请求中发送json数据 我使用Unity序列化器 所以不需要 新的 我只想在发布数据中传递一个字符串并且能够 将 ContentType 设置
  • 用数组或向量实现多维数组

    我想使用单个数组或向量实现多维数组 可以像通常的多维数组一样访问它 例如 a 1 2 3 我陷入困境的是如何实施 操作员 如果数组的维数为 1 则 a 1 应该返回位于索引 1 处的元素 但是如果维数大于一怎么办 对于嵌套向量 例如 3 维
  • 解释这段代码的工作原理;子进程如何返回值以及在哪里返回值?

    我不明白子进程如何返回该值以及返回给谁 输出为 6 7 问题来源 http www cs utexas edu mwalfish classes s11 cs372h hw sol1 html http www cs utexas edu
  • 值和类型的简洁双向静态 1:1 映射

    我将从我想象如何使用我想要创建的代码开始 它不必完全像这样 但它是我在标题中所说的 简洁 的一个很好的例子 就我而言 它是将类型映射到相关的枚举值 struct bar foo
  • 使用 boost 异步发送和接收自定义数据包?

    我正在尝试使用 boost 异步发送和接收自定义数据包 根据我当前的实现 我有一些问题 tcpclient cpp include tcpclient h include

随机推荐

  • Visual C++ 2012 cout 在运行时崩溃

    我今天决定尝试一下 Visual Studio 2012 Express 首先要做的就是写 Hello world 但是 我无法使其工作 我创建了一个 Windows 控制台应用程序项目 编写了标准代码 但导致了运行时错误 这是我的代码 i
  • Azure 上的 React + Express:无效的主机标头

    错误 当部署到具有多容器支持的 Azure Web Apps 时 我收到 无效的主机标头 消息来自https mysite azurewebsites com https mysite azurewebsites com 本地设置 这运行良
  • 无法在 Jenkins 上找到 TFS 插件 [重复]

    这个问题在这里已经有答案了 无法找到适用于 Jenkins 的 TFVC 或 Azure DevOps 和 Team Foundation Server 插件 詹金斯版本 2 263 1 由于安全漏洞 TFS 插件的官方分发已暂停 在 Je
  • 空值 - 布尔表达式

    所以我有一个关于考试作业的问题 在这个作业中我们有一堆布尔表达式 例如 FALSE OR NULL NULL 然后我们需要写出布尔表达式的值 为此 我使用了三值逻辑 但是当您获得如下布尔表达式时 它如何应用 NULLL AND TRUE O
  • 如何使用 sql 查询将数据库的子集提取到 dbunit 文件中?

    Why 我有一个很大的 Oracle 表 我想测试一些 DAO 方法 为此 我使用 dbunit Problem 我想使用 sql 查询将现有数据库的子集提取为 dbunit 平面 xml 文件 查询示例 Select t1 field1
  • spring任意消息传递tcp套接字

    我正在使用 spring integration 开发定制的双向 TCP 套接字服务器 服务器将处理请求 响应任务 但我无法向特定的连接 ID 发送任意消息 我也知道也许使用TcpSendingMessageHandler and TcpR
  • 如何在Python Flask中定位项目的for循环

    所以 我在烧瓶中有一个项目的 for 循环 我正在尝试找到一种方法将它们放置在页面上 我在引导卡中有一个任务的 for 循环 当用户创建卡片时 卡片变得非常愚蠢 并且定位变得非常奇怪 截图 https ibb co hRjCrFf 老师作业
  • 如何使用 GitHub API 确定提交属于哪个 Pull Request?

    给定提交 SHA 我想使用 GitHub API 来确定它属于哪个拉取请求 GitHub 在上显示此信息提交页面 https github com hammerlab pileup js commit ee49f07dba3821109b3
  • 获取MySQL语句的精确执行时间

    现在的结果表明 集合中的 X 行 0 00 秒 所以我想知道是否有办法可以得到小数点后两位以上的时间 Execute set profiling 1在运行语句之前 然后获取计时show profiles query See 显示配置文件语法
  • Powershell 匹配属性,然后有选择地组合对象以创建第三个

    我对此有一个解决方案 但我相信这不是最好的方法 因为它需要永远 所以我正在寻找更快 更好 更智能的方法 我有多个从 csv 文件中提取的 pscustomObject 对象 每个对象至少有一个共同属性 一个相对较小 对象中大约 200 30
  • 为什么 keras 使用“call”而不是 __call__?

    我喜欢以下代码 https www tensorflow org tutorials eager custom layers https www tensorflow org tutorials eager custom layers cl
  • 如何检测Ubuntu版本?

    我目前正在编写一个Python应用程序来更改一些网络配置文件 该应用程序需要在 Ubuntu 10 04 至 13 10 上运行 问题是 NetworkManager 在不同版本上以不同的方式被破坏 尽管他们似乎最终在 13 04 中修复了
  • SurfaceView.onAttachedToWindow 中的 NullPointerException(SurfaceView.java:207)

    我收到 SurfaceView onAttachedToWindow 引发的异常 看起来 SurfaceView 正在尝试引用 mParent 但它为空 有谁知道为什么不会设置父级但会调用 onAttachedToWindow 我正在使用
  • 如何强制 Highcharts 在 xAxis 上显示最后一个标签?

    似乎在步进 xaxis 中正常的 showLastLabel 不起作用 https stackoverflow com questions 23518720 last label is not showing in stepped labe
  • Python 未找到 netCDF4 导入

    我需要使用 netCDF4 模块来进行一些处理 我已按照此步骤操作guide http unidata github io netcdf4 python 并尝试使用 anaconda2 作为推荐post https stackoverflo
  • 如何在构造 std::vector 时放置元素?

    我想构建一个std vector某些元素具有由某些特定构造函数而不是默认构造函数构造的元素 换句话说 我想在构建向量时放置元素 我怎样才能做到这一点 考虑this https godbolt org g sWNxJv struct Item
  • 数学随机在数组中查找名称而不重复

    所以我想从一个名称数组中找到三个名称 然后我想将其写入一个新数组 虽然还没有做到这一点 但我遇到的问题是它不断随机化我已经找到的相同名称 查看jsfiddle脚本 http jsfiddle net uxd4mzcp Code findSt
  • 如何解释Map.map结果

    当我看着Map mapscaladoc 我可以看到 map B f A B Map B 但下面的简单代码不会返回Map scala gt Map answer gt 42 map case k v gt v res40 scala coll
  • 如何获取字符的ASCII值

    我如何获得ASCII https en wikipedia org wiki ASCII一个字符的值int在Python中 From here http mail python org pipermail python win32 2005
  • 使用一元/二元运算符进行后缀中缀

    我正在尝试制作一个从后缀到中缀表示法的转换器 并且需要一些帮助 已经有关于中缀到后缀转换的问题 https stackoverflow com questions 2431863 infix to postfix and unary bin