数据结构-栈(Stack)

一、什么是栈

栈是一种线性结构,相对于数组,栈对应的操作是数组的子集,只能从一端添加元素,也只能从一端取出元素 ,这一端成为栈顶。栈是一种后进先出的数据结构(Last In First Out–LIFO),在计算机的世界里,栈拥有着不可思议的作用。

二、栈的应用

2.1 在word或者其他编辑器中,当我们输入一些文本内容的时候,就用到了栈。(举例:”沉迷学习无法自拔”)

在这里插入图片描述
在这个栈中,沉迷,学习,无法,自拔这些词依次入栈,但是当我们发现 “无法”误写为“不法”时候,这时我们会执行撤销操作,自拔会先出栈,然后不法也会出栈,最后重新写入"无法"和“自拔”,也就是他们会依次入栈。

2.2 用这样的一个系统栈来记录调用过程中中断的那个调用的点 (即解释了子过程子逻辑的调用我编译器内部运行实现的机理)

在这里插入图片描述
当先执行函数A的第二行的时候会执行函数B,而暂时中断函数A的执行,此时在系统栈中会记录一个信息(A 2),即之前的程序执行到A这个函数的第二行了,在这里进行了中断,现在开始执行B这个函数了。同理,执行函数B的第二行的时候会执行函数C,同样在系统栈中会记录一个信息(B2),即执行B函数的第二行时中断了。当执行完C函数的时候, 此时看一下系统栈,位于栈顶的元素是B2,根据“栈顶的元素先出的原则”,计算机就会明白,刚才执行到B2了,这时就会从B函数第三行开始依次执行B函数(B2出栈了),然后再返回到A函数直至执行完(A2出栈)。当A2出栈后,再看一下系统栈,发现系统栈是空的,说明系统栈已经没有之前中断执行到一半这样的调用过程了,即整个过程已经执行完了。

2.3 括号匹配 题目
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。

有效字符串需满足:

左括号必须用相同类型的右括号闭合。

左括号必须以正确的顺序闭合。

注意空字符串可被认为是有效字符串。

示例 1:

输入: “()”
输出: true
示例 2:

输入: “()[]{}”
输出: true
示例 3:

输入: “(]”
输出: false
示例 4:

输入: “([)]”
输出: false
示例 5:

输入: “{[]}”
输出: true

在这里插入图片描述

package Solution;

import java.util.Stack;


//括号匹配
public class ParenthesisMatching {
   

    public boolean isValid(String s) {
   
        Stack<Character> stack = new Stack<>();

        for (int i = 0; i < s.length(); i++) {
   
            char c = s.charAt(i);
         
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值