c++ - 栈的动态

标签 c++ c stack

<分区>

我需要一些帮助来理解数据结构中堆栈的动态。

我有这个后缀符号:

a b c d * + 3 * + 5 6 2 c * + * +

评估将是:

a + 3b + 3cd + 30 + 10c

但是找出这个栈的动态的算法是什么?

LE:谢谢小伙伴们帮我理解。

-> a, b, c, d 
-> a, b c * d 
-> a, b + c * d, 3 
-> 3 * (b + c * d), a 
-> 2 * c, 6, 5, a + (b + c * d) + 3
-> 5 * (6 + 2 * c), a + (b + c * d) + 3
-> a + (b + c * d) + 3 + 5 * (6 + 2 * c)

我看到下面也有一些更正确的解释。我在此处尽可能详细地进行了说明,以便在其他人需要时更易于理解。

最佳答案

对于序列中的每个元素:

  • 如果元素是操作数,则将其压入堆栈。 (堆栈增加一个。)
  • 如果元素是运算符,从栈中弹出两个元素,应用运算符,将结果推回栈中。 (堆栈缩小一个。)

关于c++ - 栈的动态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21646269/

相关文章:

C++ 如何将对象添加到 map 并返回对 map 内新创建的对象的引用

c++ - 非整数/枚举类型的非类型模板参数的用例?

c++ - boost::interprocess vector 不释放共享内存

C 哈希表设置/获取 void* 唯一内存地址

c - OpenSSL 代码问题

cat/Xargs/command VS for/bash/command

android - 主要 Activity 从堆栈中删除 - 将 uset 状态设置为离线

c++ - 在 Windows 中移动或指定线程堆栈空间

c++ - `const &&` 是否绑定(bind)到所有 prvalues(和 xvalues)?

swift - 更改 LLDB 中的 Int 变量值