栈和队列的应用。


栈的应用
括号匹配:
想象一下,你有一个盒子(栈),用来放括号。你一边看一边把括号往盒子里放,如果看到一个右括号,就得检查盒子里是不是有对应的左括号,有就拿出来,没有就说明括号用错了。
表达式求值:
比如你要计算一个数学表达式,中缀表达式就像是我们平时写的那样,先写数字,然后写运算符。但是计算机更喜欢后缀表达式,也就是先写数字,再写运算符,就像“3 4 +”表示3加4。转换的过程就像是把中缀表达式重新排列,把运算符放到最后。计算的时候,就是把数字和运算符按顺序拿出来,遇到运算符就做计算。
递归:
递归就像是你打电话,每次电话接通都要记下对方的号码(压栈),等挂了电话(出栈),再打下一个。但是如果你电话打太多,记号码的本子可能会用完,这就是栈溢出。
队列的应用
打印机速度协调:
想象打印机是个慢吞吞的家伙,电脑是个急性子。电脑把要打印的任务排成队(队列),然后一个接一个地给打印机,这样打印机就不会手忙脚乱了。
多用户资源分配:
就像在银行排队,大家都想快点办完事,但是只能一个一个来。电脑也是这样,它把要处理的任务排成队,然后依次处理,保证每个人都能轮到。
总结
栈和队列就像是生活中的排队和打电话,一个是用来先来先服务(队列),一个是用来后进先出(栈)。在计算机的世界里,这些简单的规则帮我们解决了很多复杂的问题。
 

知识点链接
栈的应用
括号匹配算法思想:
使用一个空栈来顺序读取括号。
遇到右括号时,检查栈顶是否有对应的左括号,如果没有则括号序列不匹配。
遇到左括号时,将其压入栈中,降低其他未匹配括号的优先级。
表达式求值:
中缀表达式转后缀表达式:
确定运算符的优先级。
按照“操作数 操作数 运算符”的顺序组合元素。
重复此过程直到所有运算符都被处理。
后缀表达式的计算:
手算:从左到右扫描,每遇到运算符,就对前面的两个操作数进行运算。
机算:使用栈,扫描元素,操作数压栈,运算符时弹出两个元素进行运算,结果压栈。
中缀表达式转前缀表达式:
类似于转后缀表达式,但顺序是“运算符 操作数 操作数”。
前缀表达式的计算:
从右到左扫描,操作数压栈,运算符时弹出两个元素进行运算,结果压栈。
递归:
递归调用时,函数调用栈作为“递归工作栈”。
递归进入时,所需信息压栈。
递归退出时,从栈顶弹出信息。
注意:递归层数过多可能导致栈溢出。
队列的应用
解决主机与外部设备速度不匹配问题:
使用队列的先进先出(FIFO)特性来协调打印机与主机的速度差异。
解决多用户资源竞争问题:
将用户排成队列,然后按顺序分配CPU资源。
总结
栈和队列是两种基本的数据结构,广泛应用于计算机科学中。栈以其后进先出(LIFO)的特性,常用于括号匹配、表达式求值、递归等场景。队列以其先进先出(FIFO)的特性,常用于解决资源分配和速度协调问题。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值