JavaScript实现数据结构的栈、队列和双向链表

本文总结了使用JavaScript实现数据结构中的栈、队列和双向链表。栈利用Array的pop()、push()等方法实现,队列类似,而双向链表则需要创建Node类和链表类,包含添加、插入、获取、更新和删除结点等操作。
摘要由CSDN通过智能技术生成

数据结构中的栈、队列和链表应该是最基础的了,还有像是图、树、二叉树、最优二叉树/解等等也很重要,前端也要会数据结构是我没想到的,总结一下用JavaScript实现数据结构中的栈、队列和链表中的双向链表。

面试的时候被问到的数据结构题,当时是脑袋有点蒙的,用纸笔不知道怎么下手,过后自己写了一下其实并不难,尤其是栈和队列,可以直接直接用原生Array的pop()、push()、shift()、unshift()方法来实现,之前做JSON数据的时候还专门记录过这几个方法,真的是猪油蒙了心居然没写出来。

栈、队列

首先是栈和队列的实现,栈的核心思想是“先进后出”,队列的核心思想是“先进先出”,上课那会老师就不停得强调他们的区别,队列就像排队,先进先出;而栈是不讲道理的,先进后出。如果你当销售,先生产的产品堆压在仓库而把最新生产的产品拿来卖,到最后你可能会被老板批成PPT。

先是栈的实现,看一下主要要实现的方法:

  • pop():栈顶元素出栈并返回
  • push(el):新元素入栈
  • peek():返回栈顶元素
  • size():返回栈的长度
  • isEmpty():返回栈是否为空
  • clear():清空栈
  • print():打印栈
class Stack {
   
  constructor(...val){
   
    this.values = [...val]
  }
  pop(){
   
    return this.values.pop()
  }
  push(val){
   
    this.values.push(val)
  }
  peek(){
   
    return this.values[this.values.length-1]
  }
  size(){
   
    return this.values.length
  }
  isEmpty(){
   
    return this.values.length == 0
  }
  clear(){
   
    this.values = []
  }
  print(){
   
    console.log(this.values.toString())
  }
}

然后是队列的实现,和栈的实现非常相似:

  • dequeue():头元素出列
  • enqueue(el):新元素入列
  • front():返回队列头
  • size():返回队列的长度
  • isEmpty():返回是否为空队列
  • clear():清空队列
  • print():打印队列
class Queue {
   
  constructor(...val){
   
    this.values = [...val]
  }
  dequeue(){
   
    return this.values.shift()
  }
  enqueue(val){
   
    this.values.push(val)
  }
  front
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值