哈喽大家好!又是白云~
今天小白要和大家一起学习的是数据结构中的重要概念,栈!
栈(Stack)是一种具有特殊操作方式的线性数据结构,其特点是数据的添加和删除操作都只能在栈顶进行,遵循后进先出(LIFO,LastInFirstOut)的原则。
当说到栈,你可以想象成一个堆积起来的盘子。假设你在厨房里,有一叠盘子摞在一起,这就好像是一个栈。每次你要往这叠盘子上面添加一个盘子,你只能将盘子放在最顶上那个。这个过程叫做push(入栈)。当你想拿走一个盘子时,必须先拿掉最顶上那一个,这就是pop(出栈)操作。
要查看最顶上的盘子是什么,你可以用peek(查看栈顶)操作,这样你就可以看到最顶上的盘子但不将它拿掉。如果你觉得有点懒,不想看一大堆盘子是否还有,可以直接用isEmpty(判断栈是否为空)来看这叠盘子是否被清空。所以,栈的结构就好比一个厨房里的盘子堆,你只能往这叠盘子上面放盘子或者拿走最顶上的盘子。
来看一个例题吧~
例题:使用栈实现一个括号匹配器,检查给定的括号序列是否合法。
输入:一个只包含字符(、)、{、}、[、]的字符串。
输出:如果括号序列合法,则输出True;否则输出False。
示例:
输入:{}
输出:True
输入:{}[]
输出:True
输入:(])
输出:False
例题的答案与解析~