瓣膜数字表达式



用于瓣膜算术表达式I使用Donal Knuth算法,该算法将表达式转换为后缀,并使用后缀堆栈来解析表达式。我想知道,复杂数字表达式有类似的东西吗?

可以做的事情例如:((2 8i)*(12 3i)^(1/2))/34 21i

相同的技术。您只需定义可以执行的操作,然后将操作数类型信息与堆栈上的值一起存储。

将'i'定义为单一操作员,它将堆栈中的最后一个操作数乘以'i';您可以将堆栈中的每个值与类型相关联,但也可以通过按两个数字来处理:

然后(2 8i)作为

处理
push 2 [and 0]
push 8 [and 0]
push i
-> pop 8 and 0
-> push 0 and 8
push +
-> pop 0 and 8
-> pop 2 and 0
push 2 and 8

我认为这可以将表达式处理为(2 (2 2)i),但也可以将(2 2i)i,

最新更新