00:00
各位,我们下面继续来看关于站的三种表达式。那第一种呢,就是前缀表达式,第二种呢是中缀表达式,第三种是后缀表达式,后缀表达式呢,又叫逆波兰表达式,我们先来看前缀表达式啊,前缀表达式呢,它有一个名称叫波兰表达式。啊,我刚才讲啊,刚才说过前缀表达式呢叫波兰表达式,后缀表达式呢叫逆波兰表达式,中缀表达式是什么呢?就是前面我们讲的,就是前面讲的那些都是中罪表达式。那么前缀表达式它有个什么特点呢?我们来看一下前缀表达式,它的运算符都位于操作数之前大家看一个案例,比如说同学们可以看到这有一个。表达式,这个表达式就是中缀表达式,它的运算符呢,是在符号之间,符号的中间说,比如说三加四括起来乘以五减去六,那么这一个中缀表达式,它对应的前缀表达式是什么呢?是减乘加3456。
01:13
同学们有没有注意观察到它这个符号就是它的运算符啊,并不是按照。这个表达式出现的顺序来写的,比如说按这个顺序应该是先加再乘再减,对不对,它并不是,它是减乘加,然后是3456。那么为什么他是这样写的呢?这个跟。计算机在对前缀表达式求值是有关系的,那么下面我们来看一下前缀表达式在计算机程序里边它是怎么来求值的,看一下。前缀表达式计算机求值呢,它的这个流程是如此这般的,首先它是从右至左扫描,注意听啊,它是从右向左扫描,不是我们。
02:04
传统的从左向右扫描,当他遇到数字的时候,将数字压入站中,遇到运算符的时候呢,弹出占顶的两个数,用运算符对他们做相应的运算,它弹出的两个数是什么呢?占顶元素和次顶元素就是占的前占这个数站的数站的。前面两个,呃,两个数。并将这个结果再重新入站,重复这个过程,直到表达式的最左端,最后得到的结果就是表达式的结果,注意,同学们再说一遍啊,它是从左至右进行这个扫描,那么我们举个例子,比如说。这个表达式它对应的前缀表达式是这个,为什么根据刚才这个规则就能解释这个原因,注意它这个符号不是乱写的啊,就是减乘加这个符号不是乱写的。这个顺序不能乱,数的顺序也不能乱,乱了那么这个前缀表达式就错的。
03:05
那你看啊,我们看对于这个前缀表达式计算机怎么求值呢。他先从右至左开始扫描,也就是说他先扫描的是六。他把六。六扫描了,然后扫描543,最后这些都是数,直接入我们的对战,就是我们的站啊,他就说的对战就是我们说的站,当它遇到这个加号的时候,不是在扫描就遇到这个加号了吗?遇到加号它怎么处理呢?它弹出三和四,因为三和四是。占顶和次定元素,因为它是后面入站的,它弹出来过后呢,再把这个加号跟他进行进行运算,得到一个七,再重新入账,那这这个时候占占的这个元素,大家可以想象到应该是占比是六是五是七。能理解吧,好,接下来呢,他又继续向右扫描。
04:01
啊啊,向左扫描啊,刚才说错了,它是从右至左,应该是向向左扫描,当它扫描的是一个乘法运算的时候呢,它不判断对呀,他他不判断这个运算级的优先级了,因为它是前缀表达式,它这个顺序本身就已经给你规划好的。他遇到这个运算符的时候,它弹出占点的七和五进行运算,得到35,再入占,也就是说这个时候占呢没有它了,变成35了,能理解。好35,那拿到35过后呢,他继续往这边向左边扫描,拿到一个剪发,拿到一个减号过后呢,他把这个35和六弹出来,然后让35减去六,注意。这个谁减谁减谁呢,是先弹出来的这个数。减掉后弹出来的这个数,因此得到29,再把这个29再重新入账,那最后这个站里面留的数呢,就是整个这个前缀表达式计算的结果。能理解啊,这个就是所谓的前缀表达式啊,明白了啊,那么我们再说中缀表达式,中缀表达式没有什么可说的,中缀表达式就是我们最常见的这种运算表达式,就说我们人最熟悉的写法是三加五乘以五减六。
05:18
但是为为什么呃,计算机设计者还要提供前缀和后缀呢?是因为中缀表达式其实对于我们人来讲很好理解,但是对于计算机来说它不好操作,为什么呢?因为。大家有,大家根据前面我们讲的这个案例,你们就明白,因为这个中缀表达式它有一个问题,就说他需要去判断,他需要判断你遇到的这个操作服的优先级和到底有和后面这个优先级谁高谁低,你比如说三加四。它有小括号,那么三加四就应该先计算,如果没有小括号,那四乘以五是先计算对不对?因此对中最表达式来说呢,其实人很熟悉,但是计算机其实它并不,它并不,呃,对于计算机来说,这个中缀表达式并不方便,所以说你看在我们真正这个运算过程中,往往会把这个中缀表达式转成其他表达式来操作,一一般会转成什么呢?后缀表达式。
06:25
后缀表达式是最容易操作的,也就是说逆波兰表达式最容易操作。啊,OK,那么我们现在来看一下后缀表达式到底是什么,也就是说逆波兰表达式是长什么样子的,看压力。所谓后缀表达式呢,它又叫逆波兰表达式,它又叫逆波兰表达式,与前缀表达式相似,只是运算符呢,它位于操作数的后边。那么我们看一个案例,我们举个例子啊,比如说还以这个中缀表达式为例,它对应的后缀表达式呢,是三五加五乘六减。
07:03
注意啊,这个顺序也不是乱写的。包括符号出现的先后顺序和数字出现的前后顺序都有很都都非常重要,你再比如说三加A加B,它对应的后缀表达式又应该是AB加。这个A加小括号B减C应该是ABC减加,下面我就不一个念了啊,比如再说这个A加上D乘以小括号B减C,应该什么呢?ADBC减乘加,那至于为什么是这样子,后面我们会详细介绍。后面我们会详细介绍,那么同样我们再来看一个中缀表后缀表达式的它的一个计算机的计算过程,我们举个例子大家就明白了,来看一个案例。我们现在呢,给大家讲一个中缀和后缀啊,后缀表达式,计算机求职的过程,它这样子的,首先呢,它是从左向右扫描,这个比较符合我们人类的习惯,因为我们人呢,一般是从左到右对吧,前缀表达式是从右到到左那个不太好,所以说后缀表达式是从左至右扫描,遇到数字时,他就把这个数字压入对战。
08:14
遇到运算符的时候呢,就弹出占顶的两个数,并运算,运算弹出的是占里面的次顶元素和占顶元素,就是占顶元素和次定元素一样的,肯定是先谈它嘛,这个这个文字你不去管它,并将结果入站,重复上述过程,直到表达式的最右端,因为你是从左至右嘛。找到最后一个就是最优端,那么最后这个结果呢,就是表达式结果,我们来看一个案例,比如说还以这个中最表达式为例,它对应的前缀表达式是这个。我我再说一遍啊,为什么是这个,我们后面再讲,就他怎么把这个中缀转成这个,呃,转成这个后缀的啊,这说错了,就是后缀表达式这个单词为什么不要写错了啊,后缀表达式。
09:00
后缀表达式,那么针对这个后缀表达式呢?它的求值步骤是这样子的,从左至右开始扫描,先扫描到我们把这个站画出来,三入站。四。入站。没问题吧,然后呢,遇到加号的时候注意看啊,这个时候它再扫描,扫描到加号了,把这两个数弹出来,四为暂定元素,三为次定元素,弹出来计算三加四得到七好。这就没有了暂停,现在是变成七了。七入账,然后呢,再往下面再扫描,是不是扫描到这个五了呀。扫描五五呢,没有什么可说的,直接入账,然后再扫描这个乘号,乘号这个时候呢,他就又把这两个数弹出来。谈一个占比和次力元素,就是七乘以五等于35,然后呢,再把这个入站。明白,然后再扫描这个六。六好,六是个数,没什么可说,直接入账,就是我说的六入账,然后呢,最后又扫描到一个减号,减号是什么呀?是个运算符,这个时候呢,它弹出这个占顶和次顶元素,所以这个时候顺序是怎么样做的啊,跟前面不太一样。
10:15
跟那个前缀不一样啊,它是怎么做的呢?它是这样子的,它是让这个后面弹出来这个数减掉前面弹出来这个数,这个顺序不要搞乱了,是35减六。30减六得到29,因此最终这个结果呢,就是29。所以说大家有没有观察到不同的这表达式,它的运算的这个流程不一样,而且谁做谁在前面,谁在后面,是不是也不一样啊,也不一样,你比如说刚才我们讲的。这个前缀。前缀表达式,你看在这个地方。在这个地方35最后运算是吧,这是35.6,但是你刚才有没有注意注意分析这个35呢,35它是呃,它是入战的,它实际上是在占占顶是吧?最先是在占顶是他是呃,35跟六比起来呢,35在。
11:13
在这个在上边,那么到了后缀,后缀的时候呢,你们有没有发现他这个35是在下边,你明白这意思吧,所以说不同的表达式,这个减数和被减数。它的顺序也不一样,所以说要特别小心,那同学们那关于前缀中缀后缀表达式的基本介绍呢,我们就说到这儿,下面我们准备啊,我们准备用后缀表达式来写一个计算器,叫做逆波兰计算器。那逆波兰计算器呢?我们就用后缀表达式来完成。来完成,好,那关于逆波兰表达式计算器的完成了,我们放到下个视频讲解。
我来说两句