我是靠谱客的博主 无限冰淇淋,最近开发中收集的这篇文章主要介绍中缀、前缀和后缀表达式,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

我们学习的算法中的表达式有中缀、前缀和后缀之分,到底有什么区别呢?

中缀(INFIX)

中缀表达式(infix expression)可以是单个变量,或两个变量以及中间的操作符。

A
A + B
(A + B) + (C – D)

前缀(PREFIX)

前缀表达式(prefix expression)可以是单个变量,一个操作符,后面跟两个操作数,每个前缀表达式包括一个操作符和两个操作数。

A
+ A B
+ + A B – C D

后缀(POSTFIX)

后缀表达式(postfix expression),也叫反转的波兰记法(Reverse Polish Notation)可以是单个变量,或者是两个操作数外跟一个操作符,每个后缀表达式包括两个操作数后跟一个操作符。

A
A B +
A B + C D –

前缀和后缀记法是波兰数学家发明的手写数学表达方法,好处就是不需要括号。他们的时间复杂度都是O(n),n为数组元素个数。

INFIXPREFIXPOSTFIX
A + B+ A BA B +
A + B – C– + A B CA B + C –
(A + B) * C – D– * + A B C DA B + C * D –


为了方便起见,其他一些操作符的优先级和结合性列表如下:

TOKENOPERATORPRECEDENCEASSOCIATIVITY
( )
[ ]
– .
function call
array element
struct or union member
17left-to-right
— ++increment, decrement16left-to-right
!
~
– +
& *
sizeof
logical NOT
one’s complement
unary minus or plus
address or indirection
size (in bytes)
15right-to-left
(type)type cast14right-to-left
* / %multiplicative13left-to-right
+ –binary add or subtract12left-to-right
<< >>shift11left-to-right
> >=
< <=
relational10left-to-right
== !=equality9left-to-right
&bitwise AND8left-to-right
^bitwise XOR7left-to-right
|bitwise OR6left-to-right
&&logical AND5left-to-right
||logical OR4left-to-right
? :conditional3right-to-left
= += /= *= %=
&= ^=
assignment2right-to-left
,comma1left-to-right

转载于:https://www.cnblogs.com/programnote/p/4715541.html

最后

以上就是无限冰淇淋为你收集整理的中缀、前缀和后缀表达式的全部内容,希望文章能够帮你解决中缀、前缀和后缀表达式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(64)

评论列表共有 0 条评论

立即
投稿
返回
顶部