后缀法总结 第1篇
通常将运算符写在运算量之间,例如a+b,这种表示法称为中缀表示法。后缀表示法又称逆波兰表示法,它是波兰逻辑学家xxx维奇发明的一种表示表达式的方法。这种表示法把运算量写在前面,把运算符写在后面(后缀),例如a+b写作ab+,a+b*c写作abc*+,(a+b)*c写作ab+c*等等。一般而言,若θ是一个k(k≥1)目运算符,它对k个运算量(广义地说是k个后缀式)
作用的结果将被表示成
。这种表示法不带括号,根据运算量和运算符出现的先后位置以及每个运算符的目数,就完全决定了一个表达式的计算顺序。后缀表示法的特点是:
(1)运算量的排列顺序与中缀表示法相同;
(2)运算符是按运算的顺序排列的;
(3)运算xxx跟在被运算的对象之后出现。
后缀表示法虽然不符合人的习惯,但对计算机来说,可以很容易地使用一个栈来计算它的值或转换成另一种代码。因此,它便成了编译过程中翻译表达式的另一种常用的中间代码形式。
(以上为百度百科资料)
说点人话(doge)就是,一般情况下,我们写一个表达式都是3*(5–2)+7,这称为中缀表达式。而后缀表达式,会将运算符放在两个运算对象(操作数)后,且,后缀表达式中不包含括号(会将括号去掉)当然,在放置运算符的过程中还是需要考虑括号的作用,因为运算对象包括一整个表达式,所以运算xxx可能会放在整个括号表达式之后。
建立符号栈 顺序扫描中序表达式 a) 是数字, 直接输出 b) 是运算符 i : “(” 直接入栈 ii : “)” 将符号栈中的元素依次出栈并输出, 直到 “(“, “(“只出栈, 不输出 iii: 其他符号, 将符号栈中的元素依次出栈并输出, 直到 遇到比当前符号优先级更低的符号或者”(“。 将当前符号入栈。 扫描完后, 将栈中剩余符号依次输出
像博主这样还在c语言徘徊的,可能对于符号栈不够了解,但实际上我们只需要去模拟实现符号栈即可。这里只需要用到顺序栈,而顺序栈其实可以用一个一维数组和一个指针(博主使用的是下标法)来模拟实现即可。
我们只需要记住栈的特点就是后进先出,控制在一端输入输出即可模拟实现。
以3*(5–2)+7此中缀表达式为例
表达式:3
符号栈:
之后遇到*,由于目前是空栈,直接输入
表达式:3
符号栈:*
之后为(,直接输入
表达式:3
符号栈:*(
之后为5,直接输出
表达式:35
符号栈:*(
之后为-,由于前面是(,入栈
表达式:35
符号栈:*(-
再读取一个输入,2,直接输出
表达式:35
符号栈:*(-
然后就会遇到),此时要将到( 之间的所有符号一起输出,而(只出栈,不输出
表达式:35
符号栈:*
之后遇到+号,*的优先级比+高,所以*出栈,而之前就没有再有符号了,将+入栈
表达式:35
符号栈:+
最后遇到7,直接输出,再将符号栈中的符号逐个输出即可(不要忘记栈的后进先出特点)
最终结果为:
352-*7+
建立一个栈。从左到右逐个读取表达式,如果读到操作数就将它压入栈中,如果读到n元运算符(即需要参数个数为n的运算符)则取出由栈顶向下的n项按操作符运算,再将运算的结果代替原栈顶的n项,压入栈S中 。如果后缀表达式未读完,则重复上面过程,最后输出栈顶的数值则为结束。
同样可以使用数组模拟的顺序栈来实现。
以 2,10,2,+,6,/,-为例(比较简单,但是方法相同)
同样需要创建一个栈
从左向右扫描,前几个数都为操作数,直接存入
栈:2,10,2
之后遇到+,取出栈顶向下的两个数,2,10,相加后,在放入栈中
栈:2,12
遇到操作数6,继续读入
栈:2,12,6
遇到 / ,拿出12,6,进行12/6计算,得到2,再放入
栈:2,2
最后遇到 - ,拿出2,2,相减得0,放入
栈:0
ps:一个 正确有效的后缀表达式,计算到最后,栈中必然会剩下一个数。
后缀法总结 第2篇
意为:充满,有(fullof;hav-ing;giving;etc.)例词:useful,pitiful,hopeful,careful,helpful,forgetful,thankful,fearful
意为:没有,无(without;notgiving)例词:speechless,childless,harmless,hopeless,meaningless,homeless
意为:有……品质的()例词:beastly,manly,brotherly,friendly
意为:像……的(like)例词:childlike,statesmanlike,tiger-like
;-ish意为:像……一般的(somewhatlike)例词:meaty,sandy,silky,hairy,leafy,watery,foolish,girlish,blackish,thinnish
意为:像……一样的;引起……的;有……品质的(like;causing;havingthequalityof)例词:troublesome,burdensome,wholesome,tiresome,bothersome
(ible)意为:能……的;可以……的(abletobe;capable)例词:changeable,reliable,readable,drinkable,comfortable,expansible,convincible
意为:有……的(having,etc.)例词:wooded,pointed,moneyed,odd-shaped
意为:有……属性的,……类型的(natureof,typicalof)例词:cultural,personal,regional,musical
(ory)意为:属于……的,与……相连的(belongingto;connectedwith)例词:revolutionary,imaginary,contradictory
意为:富含……的;有……品质的;像……的(fullof;havingthequalityof;like)例词:glorious,erroneous,malicious,gracious,dangerous
(ical)意为:……类的;属于……的(typicalof;belongingto)例词:historic,historical,methodic,methodical,dramatic,heroic
意为:有……属性的;有某种倾向的(;givenortendingto)例词:attractive,talkative,restrictive,defensive,preventive,constructive,sensitive
后缀法总结 第3篇
否定前缀un-可以加在形容词之前,也可以加在动词之前,构成否定。
un-加在形容词前面,比如unhappy(不开心的),unfair(不公平的),uncomfortable(不舒服的),unjust(不公正的),unconvincing(不足以令人相信的),ungrateful(不领情的,忘恩负义的),unmarried(未婚的),unemployed(失业的)。
un-加在动词前,比如unlock(开锁),unpack(打开包裹),undo(解开),unload(卸载),unwrap(打开),unfold(打开),unzip(拉开拉链),undress(脱衣服),unbend(站起来),unveil(揭开面纱)。
后缀法总结 第4篇
否定前缀dis-往往可以加在动词、形容词之前构成否定,这些是大家平日学习中不太熟悉的,一定要特别注意。
dis-加在动词前,比如disagree(不同意),disappear(消失),disapprove(反对),disconnect(断开链接),discredit(不信任),dislike(不喜欢),dismount(下车,马),disprove(证明...虚假),disqualify(取消....的资格)
dis-加在形容词前,比如dissimilar(不同的),disloyal(不忠诚的),dishonest(不诚实),disobedient(不服从的,违背的)