数据结构实战:表达式求值工作栈变化过程可视化
输入表达式: a+b*(c+d/e^2)#
初始化stackr和stackd为空栈。
处理输入表达式的字符:
字符 'a': stackd: [a] stackr: []
字符 '+': stackd: [a] stackr: [+]
字符 'b': stackd: [a, b] stackr: [+]
字符 '': stackd: [a, b] stackr: [+,]
字符 '(': stackd: [a, b] stackr: [+,*,(]
字符 'c': stackd: [a, b, c] stackr: [+,*,(]
字符 '+': stackd: [a, b, c] stackr: [+,*,(,+]
字符 'd': stackd: [a, b, c, d] stackr: [+,*,(,+]
字符 '/': stackd: [a, b, c, d] stackr: [+,*,(,+,/]
字符 'e': stackd: [a, b, c, d, e] stackr: [+,*,(,+,/]
字符 '^': stackd: [a, b, c, d, e] stackr: [+,*,(,+,/]
字符 '2': stackd: [a, b, c, d, e, 2] stackr: [+,*,(,+,/]
字符 ')': 执行弹出栈操作: stackd: [a, b, c, d, e^(2)] stackr: [+,*,(]
字符 '#': 执行弹出栈操作: stackd: [a, b, c, d, e^(2), /] stackr: [+,*]
执行弹出栈操作: stackd: [a, b, c, d, e^(2), /, +] stackr: [*]
执行弹出栈操作: stackd: [a, b, c, d, e^(2), /, +, *] stackr: []
最终stackd中的结果为: [a, b, c, d, e^(2), /, +, *],即为表达式的逆波兰式。
原文地址: https://www.cveoy.top/t/topic/jSf 著作权归作者所有。请勿转载和采集!