第3章 栈和队列的应用

一、栈的应用


1.括号匹配

这里写图片描述
这里写图片描述

2.表达式求值

见这篇博文 “栈”的典型应用—表达式求值(C语言实现)


后缀表达式计算值:
顺序扫描后缀表达式。1.遇到数字,压栈;2.遇到运算符连续出栈两次F2,F1,计算F2<OP>F1后,压栈;3.循环前面两步,最后的结果在栈顶。(F1代表第一个出栈的数,F2代表第二个出栈的数)
后缀表达式求值实例:

后缀表达式:3 4 + 5 * 6 -
[解]顺序扫描后缀表达式,
1.遇3、4压栈。   栈底— 3 4 -栈顶
2.遇+,连续出栈两次,3+4,然后将结果7压栈。   栈底- 7 -栈顶
3.遇5压栈。 栈底— 7 5 -栈顶
4.遇*,连续出栈两次,7*5,然后将结果35压栈。  栈底- 35 -栈顶
5.遇6压栈。 栈底— 35 6 -栈顶
6.遇-,连续出栈两次,35-6,然后将结果29压栈。 栈底— 29 -栈顶
表达式扫描完毕,结果在栈顶——29。


前缀表达式计算值:
逆序扫描前缀表达式。1.遇到数字,压栈;2.遇到运算符连续出栈两次F2,F1,计算<OP>F2 F1后,压栈;3.循环前面两步,最后的结果在栈顶。
前缀表达式求值实例:

前缀表达式:- * + 3 4 5 6
[解]逆序扫描前缀表达式,
1.遇6、5、4、3压栈。   栈底— 6 5 4 3 -栈顶
2.遇+,连续出栈两次,+4  3 ,然后将结果7压栈。    栈底- 6 5 7 -栈顶
3.遇*,连续出栈两次,*5  7,然后将结果35压栈。    栈底- 6 35 -栈顶
4.遇-,连续出栈两次,-6  35,然后将结果29压栈。   栈底— 29 -栈顶
表达式扫描完毕,结果在栈顶——29。



中缀表达式对人来说很容易理解,但对计算机来说很难。
前/后缀表达式对计算机来说很容易。所以需要将中缀表达式转化为前/后缀表达式。

中缀表达式 转 前缀表达式
中缀表达式 转 前缀表达式
例子:
这里写图片描述
中缀表达式 转 后缀表达式
这里写图片描述
例子:
这里写图片描述


二、队列的应用



1.队列在层次遍历中的应用
使用队列是为了保存下一步的处理顺序。
这里写图片描述

2.队列在计算机系统中的应用
比如打印机数据缓冲区。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值