加入收藏 | 设为首页 | 会员中心 | 我要投稿 鹤壁站长网 (https://www.0392zz.cn/)- 分布式云、存储数据、视频终端、媒体处理、内容创作!
当前位置: 首页 > 站长资讯 > 传媒 > 正文

数据结构与算法「前缀,中缀,后缀」

发布时间:2021-03-27 10:48:32 所属栏目:传媒 来源:互联网
导读:前缀表达式又称波兰表达式,前缀表达式的运算符位于操作符之前,如(3+4)*5-6对应的前缀表达式就是- * + 3 4 5 6 前缀表达式的计算机求值 从右至左扫描表达式,遇到数字时,就压入堆栈,遇到运算符时,弹出栈顶的两个数,用运算符对他们做相应的计算(栈顶元素和次顶

前缀表达式又称波兰表达式,前缀表达式的运算符位于操作符之前,如(3+4)*5-6对应的前缀表达式就是- * + 3 4 5 6

前缀表达式的计算机求值

从右至左扫描表达式,遇到数字时,就压入堆栈,遇到运算符时,弹出栈顶的两个数,用运算符对他们做相应的计算(栈顶元素和次顶元素),并将结果入栈;重复上述过程直到表达式最左端,最后运算得出的值即为表达式的结果.

例如:(3+4)*5-6对应的前缀表达式就是- * + 3 4 5 6,针对前缀表达式求值步骤如下:

  1. 从右至左扫描,将6,5,4,3压入堆栈.
  2. 遇到+运算符,因此弹出3和4(3为栈顶元素,4为次顶元素),计算出3+4的值,得7,再将7入栈.
  3. 接下来是*运算符,因此弹出7和5,计算出35,将35入栈.
  4. 最后是-运算符,计算出35-6的值,即29,由此得出最终结果.

中缀表达式

中缀表达式就是常见的运算表达式,如(3*4)+5-6.中缀表达式的求值是我们人最熟悉的,但是对计算机来说却不好操作,因此在计算结果时,往往会将中缀表达式转换成其他表达式来操作(一般转换成后缀表达式).

后缀表达式

后缀表达式又称为逆波兰表达式,与前缀表达式类似,只是运算符在操作数之后.

如(3+4)*5-6对应的后缀表达式就是3 4 + 5 * 6 -

表达式的计算机求值

从左至右扫描表达式,遇到数字时,将数字压入堆栈,遇到运算符时,弹出栈顶的两个元素,用运算符对它们做对应的计算(栈顶元素和次顶元素),并将结果入栈,重复上述过程直到表示最右端,最后运算得出的值即为表达式的结果.

例如:(3+4)*5-6对应的后缀表达就是 3 4 + 5 * 6 -,针对后缀表达式求值步骤如下:

  1. 从左至右扫描,将3和4压入堆栈.
  2. 遇到+运算符,因此弹出4和3(4为栈顶元素,3为次顶元素),计算出7,再将7入栈.
  3. 将5入栈.
  4. 遇到*运算符,因此单出5和7,计算出35,将35入栈.
  5. 将6入栈.
  6. 最后是-运算符,计算出29,由此得出最终结果.

中缀表达式转后缀表达式

1.初始化两个栈:运算符栈s1和存储空中间结果的栈s2.

2.从左至右扫描表达式.

3.遇到操作数时,将其压入s2.

4.遇到运算符时,比较其与s1栈顶运算符的优先级.

  1. 如果s1为空,或者栈顶运算符为左括号"(",则直接将此运算符入栈.
  2. 否则,若优先级比栈顶运算符的高,也将运算符压入s1.
  3. 否则,将s1栈顶的运算符弹出并压入s2中,再次转到(4.1)与s1中新的栈顶运算符相比较.

5.遇到括号时:


(编辑:鹤壁站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读