JavaScript中栈和队列应用详情
作者:??熊孩子依旧调皮???? 发布时间:2023-05-01 00:25:52
标签:JavaScript,栈,队列
什么是栈和队列
栈如果用数组模拟的话是类似于一个U
形桶状堆栈空间,地下是封口的,只能从顶部一个地方进出,它的进出都是有顺序的,看下图:如果是进入,则是最下是最先进入的,如果要出,则是从最顶部先出
和队列来对比,只是数据结构相同,队列是一侧进一侧出,做任务队列调度的时候都是先入先出
什么时候用到栈
从编辑器开发写代码的时候,如果代码的中的括号写错了,则很容易判定出那个地方少了括号,在JavaScript
语法中有可以设定大括号{}
、中括号:[]
、小括号:()
、引号:""
等可以判定的规则, 可以发现它是有一些规则的,可以通过两侧是否对称来进行判断,如果不对称则提示错误
function (b){
let a = []
let obj = {"(":")","[":"]","{":"}"}
for(let i = 0;i<b.length;i++ ){
const last = b[i]
if(last in obj){
a.push(ele)
}else{
if(ele!= obj[stack.pop]){
return false
}
}
}
return !a.length
}
思路:它在栈中首先通过遍历把数组的每一位放到栈中,如果发现放入栈中有相同的字符则把它两个同时推出,在代码中,循环遍历对象如果传入的对象在Obj
中有的话,则继续,如果没有停止遍历
目录的计算
在Nodejs
中经常碰到目录的处理,比如webpack
,目标是把当前的相对路径转换为绝对路径,/a/b/../c./b
,这种格式,pathResult
,把传入的字符串通过/
拆分成数组,并判定它是否为空或者是是否相对路径,并把它拆分并放到数组
function (path){
var pathArr = path.split('/')
var newPath = []
arr.forEach(temp=>{
if(temp == '' || temp == '.'){
return
}else if(item == '..'){
if(newPath.length){
newPath.pop()
}else{
return
}
}else{
newPath.push(item)
}
})
}
它在栈中的应用是把每个对应的路径名传入到栈中,如果碰到相对路径则,转换为绝对路径,最后在返回出 最后把该数组,通过/
拆分成字符串 return "/"+newPath.join('/')
来源:https://juejin.cn/post/7110569679000698916


猜你喜欢
- 本文实例为大家分享了Unity实现ScrollView滑动吸附的具体代码,供大家参考,具体内容如下最近在做一个展示模块的时候遇到了一个需要实
- 本文实例为大家分享了JavaFX实现简单日历效果的具体代码,供大家参考,具体内容如下1.先看效果:2.代码:1)ClockEdge.java
- 本文实例讲述了Android使用ToggleButton实现开关效果的方法。分享给大家供大家参考,具体如下:activity_main.xm
- 前言 侧滑的实现方式有很多方式来实现,这次总结的ViewDragHe
- 前几天在“Android绘图之渐隐动画”一文中通过画线实现了渐隐动画,但里面有个问题,画笔较粗(大于1)时线段之间会有裂隙,我又改进了一下。
- 概述在以下示例中,将介绍在PDF文档页面设置页面切换按钮的方法。示例中将页面切换按钮的添加分为了两种情况,一种是设置按钮跳转到首页、下页、上
- 下面我通过代码为大家分享下C#模拟鼠标,具体内容如下:想必有很多人在项目开发中可能遇见需要做模拟鼠标点击的小功能,很多人会在百度过后采用mo
- 一、概述在日常开发中,获取一批数据后,可能需要跟据一定规则对这批数据进行排序操作。在JAVA中,动态数组ArrayList经常被用来存储数据
- 我们在编写Web应用时,经常需要对页面做一些安全控制,比如:对于没有访问权限的用户需要转到登录表单页面。要实现访问控制的方法多种多样,可以通
- 本文实例为大家分享了Android实现拍照添加时间水印的具体代码,供大家参考,具体内容如下效果如下图 :1、拍照// 非空判断 拍照?if
- Notification的作用通知(Notification)是Android系统中比较有特色的一个功能。当某个应用程序希望向用户发出一些提
- 新建两个工程,一个客户端,一个服务端,先启动服务端再启动客户端两个工程的读写操作线程类基本上完全相同服务端:import java.io.B
- package com.test;import org.htmlparser.Node;import org.htmlparser.Node
- 本文实例为大家分享了Java实现高校教务系统的具体代码,供大家参考,具体内容如下需求:建立一个教务管理系统,为学生和教师提供不同的功能//简
- 打包与运行在项目开发完成之后,可以直接用IDEA将其打包成JAR包运行,也可以打包成WAR包运行以便在多服务器、多配置环境下运行。双击cle
- 废话不多说,先看效果,如果大家感觉不错,请参考实现代码这个功能我是用Fragmentdialog里面做的,也遇到不少坑第一,就是设置背景的d
- 和大家一起分享一下学习经验,如何实现Android文件下载进度显示功能,希望对广大初学者有帮助。先上效果图:上方的蓝色进度条,会根据文件下载
- 任何一个类都是Class类的实例对象,这个实例对象有三种表示方式第一种表示方式(任何一个类都有一个隐含的静态成员变量class):Class
- 前面讲解了MediaPlayer播放网络音频,主要介绍了MediaPlayer关于网络音频的缓冲和进度条控制的方法,本文再来讲解一下Medi
- 这篇文章主要介绍了SpringBoot路径映射实现过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要