美文网首页
栈和队列—栈的应用

栈和队列—栈的应用

作者: 尤奇勤_三月 | 来源:发表于2019-07-15 19:48 被阅读0次
冰冻非一日之寒

这里介绍栈的三种应用~

编辑器—Ctrl+Z(撤销)

当我们在文档中打这样一句话“我爱数据结构”

假如,每次打两个字

我爱 数据 机构

把“结构”误打成“机构”,我们只需要 Ctrl+Z 一下

我爱 数据

随后,再打上“结构”二字就好了

我爱 数据 结构

这背后的原理就是栈的应用

栈和队列—栈的应用

假如,想撤销到这“我爱”,只需要再 Ctrl+Z 就好了

栈和队列—栈的应用

不仅仅是word文档软件,任何编辑器的撤销原理都是栈的应用

操作系统—系统调用栈

举例,这里有三个函数,A(),B(),C()

执行顺序如下图

栈和队列—栈的应用

首先,调用函数A()。当函数A执行到一半时,调用函数B(),这时会暂时中断函数A,去执行函数B。而此时系统栈会记录一个信息,我们给这个信息取名为A2,即函数A执行到第二行了,暂时中断,开始执行函数B(箭头表示执行到哪一步了)

栈和队列—栈的应用

同理,当函数B执行到第二行时,系统栈会记录一个信息B2

栈和队列—栈的应用

然后,执行函数C。当函数C执行完时,该怎么办呢?

栈和队列—栈的应用

此时,系统栈就起作用了。显然,系统栈的栈顶是B2,计算机便知道了,上一步操作是执行到函数B的第二行中断的,这时就可以跳到函数B的第二行继续向下执行了,同时B2也会出栈

栈和队列—栈的应用

当函数B执行完时,计算机会再去看系统栈,便知道上一次的中断位置为A2,这时计算机自动退回到A2位置并且继续向下执行程序(执行函数A的第三行),同时A2出栈

栈和队列—栈的应用

当函数A执行完时,计算机会继续看系统栈,而此时系统栈已经空了,计算机便知道此时程序已经全部结束了。

这就是子过程执行结束时计算机会自动退回到上一次中断位置的背后原理,即系统栈会记录程序执行时的中断点。

这和我们经常使用到的递归是类似的。

编辑器—括号匹配

当我们使用文档编辑器、代码编辑器工作时,都经常会用到括号,而我们使用的括号匹配不成功时,编辑器就会报错,那么,编辑器是如何知道的呢?其实,就是利用了栈这种数据结构。

首先,看一道Leetcode上的算法题

leetcode 中文版

题中的“关闭”,意思是“匹配”。

解题思想:对于给出的 括号字符串 ,对这个字符串从左到右依次判断,如果是左括号(、[、{ 其中的一个,就让其入栈;如果是右括号 }、[、( 其中的一个,便让其与栈顶元素相比较,二者相同就继续向下执行判断,直到找到一个不同的,返回false,即匹配不成功;如果遍历完所有字符串,没有发现不同的,就返回true,即匹配成功。

下面是java代码

相关文章

  • 算法-栈和队列算法总结

    栈和队列算法总结 1 模拟 1.1 使用栈实现队列 1.2 使用队列实现栈 2 栈的应用 2.1 栈操作 2.2 ...

  • 队列和栈的应用

    队列和栈的使用 标签(空格分隔): algorithm 队列和栈的应用 1.队列的应用 队列是一种常见的数据结构,...

  • 栈&队列

    一、栈&队列总结 栈/队列的应用接雨水验证栈序列滑动窗口的最大值 栈/队列的特殊实现用两个栈实现队列用两个队列实现...

  • 数据结构——栈和队列

    用数组实现栈和队列 用栈实现队列 用队列实现栈 栈和队列的经典算法题最小间距栈宠物收养所 数组实现栈和队列 用数组...

  • 栈和队列—栈的应用

    冰冻非一日之寒 这里介绍栈的三种应用~ 编辑器—Ctrl+Z(撤销) 当我们在文档中打这样一句话“我爱数据结构” ...

  • 栈和队列

    用栈定义队列(出入栈) 用队列定义栈(数据队列和辅助队列)

  • 数据结构复习

    第三章 栈和队列 一 栈 栈的类型 顺序栈 链式栈 双向栈 栈的应用 数制转换 行编辑程序 迷宫求解 表达式求值:...

  • Algorithm小白入门 -- 队列和栈

    队列和栈队列实现栈、栈实现队列单调栈单调队列运用栈去重 1. 队列实现栈、栈实现队列 队列是一种先进先出的数据结构...

  • 数据结构学习 | 队列和栈

    栈 后进先出 栈顶允许插入(压栈)、删除(弹栈) 应用:数制转换数制转换与栈 队列 先进先出 队列头部允许删除,队...

  • 栈和队列

    栈和队列 本质上是稍加限制的线性表 栈和队列定义 栈顺序栈定义 链栈结点定义 队列顺序队列 链队列链队类型定义 链...

网友评论

      本文标题:栈和队列—栈的应用

      本文链接:https://www.haomeiwen.com/subject/fcdfwqtx.html