堆栈之中缀转后缀表达式(C语言)

本文介绍了如何利用堆栈数据结构将中缀表达式转换为后缀表达式。堆栈在处理运算符的优先级问题上起到关键作用,后缀表达式简化了运算符的处理,使得计算过程更直观。文章详细阐述了转换规则,并提供了代码实现。
摘要由CSDN通过智能技术生成

我们再来复习一下堆栈(Stack)这个数据结构,堆栈是有一定约束的线性表,插入和删除操作都作用在栈顶(Top)位置。

我们既可以通过数组顺序实现堆栈,也可以通过链表链式实现堆栈,具体情况具体分析。

那么什么是中缀表达式后缀表达式呢?

通俗地来说,中缀表达式就是我们平常用到的表达式的方式,比如说: 

1+2x(3-4)

而后缀表达式呢?则是计算机容易识别的,但是对于人来说有点难受:

1234-x+

这就是上面的表达式用后缀法来表达,这样的表示方法有什么好处呢?因为在中缀表达式中,我们从头往后读,如果读到了运算符号,没有办法立即进行运算,因为后面可能有更高的优先级的运算符号,所以简单地从左到右的计算时不可行的。但是在后缀表达式中,我们读到一个符号以后就可以马上和该符号之前的两个数一起做运算,不需要判别运算符的优先级,这就是后缀表达式的好处。

那么如何将中缀表达式转换为后缀表达式呢?我们就需要用到堆栈这个数据结构。

通过上面的例子可以看到,后缀表达式和中缀表达式的数字相对位置是不改变的,有变化的只有运算符的位置。

而运算符的输出则需要根据前后运算符的优先级来看,有可能在得到了后一个运算符的时候,才知道要输出前一个运算符,所以堆栈就很符合这个特点。

具体关键点是࿱

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值