写信网 > 娱乐百科 > 中缀表达式是什么(什么叫中缀表达式)

中缀表达式是什么(什么叫中缀表达式)

时间:04-19    来源:写信网

大家好,给大家分享一下什么是中缀表达(什么是中缀表达),这个很多人还不知道。下面详细解释一下。现在让我们来看看!

1.如何将中缀表达式转换成前缀后缀表达式?

1.中缀表达式改变后缀的算法:遇到操作数时,直接输出。

2.堆栈是空是的。如果遇到运算符,就直接入栈。

3.当你遇到一个左括号,把它放到堆栈上。

4.当遇到右括号时,执行弹出操作,并输出弹出元素。直到弹出堆栈的元素是一个左括号。

5.遇到其他运算符时,弹出优先级大于等于该运算符栈顶的所有元素,然后将该运算符放入栈中。最终堆栈中的元素被顺序地从堆栈中移除。

2.如何将中缀表达式转换成后缀表达式?

1.初始化一个空堆栈,用于进入和退出符号堆栈。

2.第一个字符是数字9,输出9,后面是符号“ ”,推入堆栈。

3.第三个字符是“(”,还是一个符号。因为只是左括号,还没有配对,所以去栈。

4.第四个字符是数字3,输出,总表达式是9 ^ 3,后面是“-”push。

5.接下来是数字1,输出,总表达式是9 ^ 3 ^ 1,后面是符号“)”。此时需要匹配前面的“(”,所以栈顶依次出栈输出,直到“(”出栈。此时左括号上方只有“-”,所以输出“-”,总输出表达式为9 ^ 3 ^ 1-

6.然后是数字3,输出,总的表达式是9 3 1-3。这后面是符号“*”,因为栈顶的符号是“ ”,优先级比“*”低,所以不输出,不压入栈中。

7.然后是“ ”这个符号。此时当前栈顶元素的优先级比这个“ ”高,所以栈中的元素被弹出输出(没有比“ ”号更低的优先级,所以全部弹出)。总输出表达式为9 3 1-3 * 然后将当前符号“ ”推入堆栈。即前6张图中栈底的“ ”是指中缀表达式中开头9后的“ ”,而下图中栈底(也是顶部)的“ ”是指“9 (3-1)*3 ”中最后的“ ”。

8.紧接在数字10输出之后,总表达式变成9 3 1-3 * 10。

9.最后一位数字2,输出,总表达式为9 3 1-3* 10 2

10.因为在最后,所以栈中的所有符号都从栈中取出来输出。最终输出后缀表达式结果是9 3 1-3* 10 2/

从刚才的推导中,你会发现,要想让计算机具备处理我们通常的标准(中缀)表达式的能力,最重要的是两步:

将中缀表达式转换成后缀表达式(堆栈用来进入和退出操作的符号)。

计算后缀表达式得到结果(堆栈进出操作使用的数字)。

在整个过程中,我们充分利用了后进先出法的搜索特性。理解好了,其实就理解了stack的数据结构。

3.c语言:数据结构(下面写中缀表达式的后缀表达式)

网上说的比较麻烦,其实很简单:

你首先要知道的是中缀换成后缀的时候操作数的顺序是不会变的。另外,“(”不会出现在后缀表达式中。

那么,你可以这样看。在这个表达式中,根据算法,应该先计算出(-B)(这里,你的表达式中应该少了一个括号),所以“B-”在一起,然后(-B)的结果乘以A,就成了AB-*(因为是A*(-B),A在B之前,而且”(注:因为C在AB之后,C在*)之后

如果中缀表达式为:C A *(B),那么后缀表达式为:CAB-*

希望你能理解!!!

同样的例子,请看:?oldq=1

4.如何将后缀表达式转换成中缀表达式?

中缀表达式被转换成后缀表达式并被求值。

算法:

中缀表达到后缀表达的方法;

1.遇到操作数:直接输出(添加到后缀表达式)

2.栈为空时,遇到运算符就直接入栈。

3.遇到左括号:堆叠它。

4.遇到右括号:执行弹出操作,输出弹出的元素,直到弹出左括号,不输出左括号。

5.遇到其他运算符:加减乘除:弹出优先级大于等于该运算符的所有顶层元素,然后将该运算符放入堆栈。

6.最后将栈中的元素依次从栈中取出输出。

例如

a b*c (d*e f)*g - >abc* de*f g*

遭遇:直接输出:

后缀表达式:a

堆栈:空

遇到 :stack: 空,所以 被推入堆栈。

后缀表达式:a

堆栈:

b:直接输出

后缀表达式:ab

堆栈:

遇到*:栈不是空,但是 的优先级不高于*,所以*是栈。

后缀表达式:ab

堆栈:*

c:直接输出

后缀表达式:abc

堆栈:*

遇到 :堆栈不是空,堆栈中*的优先级大于 ,堆栈中 的优先级等于 ,那么将运算符( )放到堆栈上。

后缀表达式:abc*

堆栈:

遇到(:直接进入堆栈。

后缀表达式:abc*

堆栈:(

d:输出

后缀表达式:abc* d

堆栈:(

遇到*:栈不是空,栈中的(优先级小于*,所以不弹出。

后缀表达式:abc* d

堆栈:* (

遭遇e:输出

后缀表达式:abc* de

堆栈:* (

遇到 :因为*的优先级大于 ,所以输出并弹出,但(的优先级低于 ,所以弹出*并推送 的。

后缀表达式:abc* de*

堆栈: (

遇到f:输出

后缀表达式:abc* de*f

堆栈: (

遇到):执行弹出,输出元素,直到弹出左括号,括号不输出。

后缀表达式:abc* de*f

堆栈:

遇到*:堆栈为空,堆栈。

后缀表达式:abc* de*f

堆栈:*

g:输出

后缀表达式:abc* de*f g

堆栈:*

遇到中缀表达式结尾:所有运算符都被弹出并输出。

后缀表达式:abc* de*f g*

堆栈:空

5.c语言数据结构(写出下面中缀表达式的后缀表达式)

知道答案是对的。。为什么不知道为什么是对的?

中缀表达式类似于我们平时的普通表达式,而后缀表达式则是由运算符简化的。

例如,在(1)中:A-。。。满足-数,化简为-A(用X代替这个-A);XB .。。遇到 号时,化简为X B(即-A B,其中X B用Y代替);YC .。。满足-数,化为Y-C。。晚点再约吧。

我前面说的相当于把后缀表达式翻译成中缀表达式,反过来翻译的方法其实也是一样的。

你明白吗?如果你有任何问题,你可以再问一次

6.c语言中缀表达式

写一个,你试试。

#包括

#define is_digit(ch) ((ch)>= ' 0 ' & amp& amp‘(ch)’,‘& gt;,'',' & gt'},

{ ' & gt',' & gt','',' & gt'},

{ ' & gt',' & gt',' & gt',' & gt','',' & gt'},

{ ' & gt',' & gt',' & gt',' & gt','',' & gt'},

{ ' ',' & gt',' & gt',' & gt',' $ ',' > ',' & gt'},

{'')

{

* sp = * CP-;

* sp =“”;

OCI = get _ cal _ index(* CP);

}

if(pri[oci][nci] == '

7.中缀表达式到后缀表达式

要首先设置一个操作符的栈st,只需从左边扫描中缀表达式。

1.如果遇到数字,直接放在后缀表达式的末尾;

2.如果你遇到遭遇操作符

答:如果此时站为空,则直接放入栈中;

b:循环:如果栈st不是空且栈顶操作符的优先级大于等于当前操作符,则栈顶操作符会弹出栈,放在后缀表达式的末尾;

c:如果栈st不是空且栈顶操作符的优先级小于当前操作符,则直接将该操作符放入栈中;

重复1和2,直到扫描完整个中缀表达式。如果此时栈st不是空,那么栈顶的运算符将被取出栈,依次放在后缀表达式的末尾。

以上解释了什么是中缀表达(什么是中缀表达)。这篇文章已经分享到这里了,希望对大家有所帮助。如果信息有误,请联系边肖进行更正。

标签: 中缀表达式 后缀表达式 表达式转换 数据结构 c语言

中缀表达式是什么(什么叫中缀表达式) 内容由写信网整理,转载请保留地址: http://m.woxiexin.com/baike/8QeTUS8YfSqhfJnqDUqnhLmk.html

  • 最新阅读

PC百科   中缀表达式是什么(什么叫中缀表达式)

0.020138s