栈和队列的基本应用

目录

1 栈的基本应用

1.1 括号匹配

1.2 表达式转换求值

1.2.1 表达式转换(中缀转后缀、前缀)

1.2.2 表达式求值(后缀、前缀的手算和机算)

1.3 栈在递归中的应用

2 队列的基本应用

2.1 树的层次遍历

2.2 图的广度优先遍历

2.3 队列在操作系统中的应用


1 栈的基本应用

1.1 括号匹配

问题:

假设表达式有三种括号:圆括号“()”,花括号“{}”,方括号“[]”。它们可互相嵌套,如{([])}或{([])()[]}均为正确格式。而{)),{[()]均为不正确格式。

输入由三种括号构成的字符串,如何检测字符串里括号格式的正确性?

力扣题目:有效的括号

算法思路:

  • 创建一个空栈,开始顺序扫描所有字符
  • 遇到左括号入栈
  • 遇到右括号则弹出已入栈的栈顶左括号(若栈为空没有左括号,直接退出报错)
  • 检查两括号是否匹配(若两括号类型不一样,直接退出报错)
  • 若所有字符都扫描完,检查栈里是否还剩余左括号(若栈里还有左括号剩余,则报错)

算法核心就是:遇到左括号就入栈,遇到右括号就弹出栈顶的左括号与右括号匹配

匹配失败有三种情况:

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值