JavaScript -数据结构-栈结构以及使用数组和队列实现栈结构

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

数据结构可以说是三大件(数据结构,计算机网络,计算机组成)中挺为重要的一部分了,很多人有时觉得数据结构没啥用,但往往这只是对于简单的编写代码来说,我们往往很少去了解到我们一些调用的方法的实现原理,并且在很多时候JavaScript引擎帮我们处理好了一切。但是这并不代表我们不去了解甚至把它当为关键来学习。
在武林中,同样的招式,也会因为不同的人而不同的效果,这就是一个人内力的区别。有的人从小练就内力,打出的每一招简洁有力,以一破百。相同的,数据结构,也叫算法吧,就是我们程序员的基本修养和内力,招式千变万化,掌握基本才能以不变应万变,在现在的越来越多的公司也会要求有良好的算法基础。在大公司这更是必备的要求。呜呜呜,已经卷到找份实习都会有较高的要求。

在这里插入图片描述
之前和一位字节大佬的聊天,另外,我舍友面试阿里,笔试两道力扣hand,同志萌,要是打算进大厂的话,越早把算法刷起来你的优势越大。

在该系列,我会尽力去讲解JavaScript的数据结构,并且会通过与知识点的例题(力扣)加深理解。大家在学习后要多动脑,动手去实现它。

一、队列

概括

二、创建方法

基于数组的创建

基本思想是利用一个数组来存储数据,其实很简单的,大家试着写一下就好了。

  • 实现代码
 

基于队列的创建

实现思想其实很简单,我们是要实现先进先出,先放入的在最上面的。所以我们应该在入栈时保证队列中新加入队尾的元素被移到了队头,出栈只需弹出队头元素即可。这里用两个队列来实现

  • 实现代码



美妙的算法时间

力扣20
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
1.左括号必须用相同类型的右括号闭合。
2.左括号必须以正确的顺序闭合。

思路

代码实现


总结

提问环节

1.有6个元素6,5,4,3,2,1按顺序进栈,问下列哪一个不是合法的出栈顺序?

A:5 4 3 6 1 2 (√)B:4 5 3 2 1 6 (√)C:3 4 6 5 2 1 (×)D:2 3 4 1 5 6 (√)

解析:
关于栈非常经典的一题。
A答案:65进栈,5出栈,4进栈出栈,3进栈出栈,6出栈,21进栈,1出栈,2出栈(整体入栈顺序符合654321);
B答案:654进栈,4出栈,5出栈,3进栈出栈,2进栈出栈,1进栈出栈,6出栈(整体的入栈顺序符合654321);
C答案:6543进栈,3出栈,4出栈,之后应该5出栈而不是6,所以错误;
D答案:65432进栈,2出栈,3出栈,4出栈,1进栈出栈,5出栈,6出栈。符合入栈顺序;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

文默

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值