当前位置:首页 > 编程笔记 > 正文
已解决

栈的应用:括号匹配,递归

来自网友在路上 161861提问 提问时间:2023-11-09 04:29:13阅读次数: 61

最佳答案 问答题库618位专家为你答疑解惑

目录

  • 1.栈的应用
    • 1.括号匹配问题
      • 算法实现
    • 2. 递归
      • 栈在递归中的应用
  • 3.队列的应用

1.栈的应用

1.括号匹配问题

①可用栈实现该特性:最后出现的左括号最先被匹配(LIFO)。
②出栈:每出现一个右括号,就“消耗”一个左括号。
③匹配失败情况:左括号单身;右括号单身;左右括号不匹配。

算法实现

①定义顺序栈(也可以动态使用链栈实现):
在这里插入图片描述
②基本操作:
在这里插入图片描述
③检验括号合法性的函数:
在这里插入图片描述

2. 递归

递归就是函数调用的过程。
函数调用的特点:最后被调用的函数最先执行结束((LIFO)

函数调用时,需要用一个栈存储:
①调用返回地址
②实参
③局部变量

栈在递归中的应用

适合用“递归”算法解决:可以把原始问题转换为属性相同,但规模较小的问题。(计算阶乘,斐波拉契数列等)

递归调用时,函数调用栈可称为“递归工作栈”。
每进入一层递归,就将递归调用所需信息压入栈顶。
每退出一层递归,就从栈顶弹出相应信息。
缺点:
太多层递归可能会导致栈溢出。(空间复杂度变高)
②可能包含很多重复计算。

可以自定义栈将递归算法改造成非递归算法。

3.队列的应用

①树的层次遍历
②图的广度优先遍历
③在操作系统中:多个进程争抢着使用有限的系统资源时,FCFS(First Come First Service,先来先服务)是一种常用策略。可用队列实现。
④打印机数据缓冲区

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"栈的应用:括号匹配,递归":http://eshow365.cn/6-35866-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!