数据结构二:栈(Stack)

本文介绍了栈这种线性结构的基本概念,强调了栈只能从一端进行添加和移除元素的特点,即后进先出(LIFO)原则。讨论了栈在括号匹配和操作撤销等场景中的应用,并提供了有效的括号匹配问题的解题思路。同时,给出了栈的代码实现,并对其时间复杂度进行了分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1、栈的简介:

2、栈的图示:

2.1、栈的应用一:

2.2、栈的应用二:

3、栈的实现:

3.1、代码实现:

4、时间复杂度分析


1、栈的简介:

  • 栈也是一种线性结构
  • 相比数组,栈对应的操作是数组的子集
  • 只能从一端添加元素,也只能从一端取出元素
  • 这一端称为栈顶

2、栈的图示:

2.1、栈的应用一:

解释:我想输入沉迷学习无法自拔。第一次输入“沉迷”,第二次输入“学习”,第三次输入“不法”,输入错误,因此需要撤销。

2.2、栈的应用二:

2.3、栈的应用二:括号匹配-编译器

https://leetcode-cn.com/problems/valid-parentheses/

我们来看leetcode上的一道题:

20. 有效的括号

给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
 

示例 1:

输入:s = "()"
输出:true

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值