0
点赞
收藏
分享

微信扫一扫

队列的实现

忍禁 2022-02-15 阅读 48
p2plinqgnu

队列实现以下功能

enqueue() 入队方法

dequeue() 出队方法

top()          获取队首值

size()         获取队列的元素个数

clear()       清空队列

基于数组

// 基于数组
class Queue {
  constructor() {
    this.queue = []
    this.count = 0
  }

  // 入队
  enQueue(item) {
    this.queue[this.count++] = item
  }

  // 出队
  deQueue() {
    if (this.isEmpty()) {
      return
    }

    this.count--
    return this.queue.shift()
  }

  isEmpty() {
    return this.count === 0
  }

  // 获取队首元素值
  top() {
    return this.queue[0]
  }

  // 获取元素个数
  size() {
    return this.count
  }

  // 清空队列
  clear() {
    this.queue = []
    this.count = 0
  }
}

基于对象

class Queue1 {
  constructor() {
    this.queue = {}
    this.count = 0
    this.head = 0 // 用于记录队首的键
  }

  // 入队
  enQueue(item) {
    this.queue[this.count++] = item
  }

  // 出队
  deQueue() {
    if (this.isEmpty()) {
      return
    }

    const data = this.queue[this.head]
    delete this.queue[this.head]
    this.head++
    return data
  }

  isEmpty() {
    return this.size() === 0
  }

  // 获取队首元素值
  top() {
    return this.queue[0]
  }

  // 获取元素个数
  size() {
    return this.count - this.head
  }

  // 清空队列
  clear() {
    this.queue = {}
    this.count = 0
    this.head = 0
  }
}

1

举报

相关推荐

0 条评论