7.实现队列函数(先进先出)

问题描述

实现一个队列函数,按照先进先出的顺序,在指定时间后打印出对应的数字。具体要求如下: 100 秒后打印 1 200 秒后打印 2 300 秒后打印 3

实现思路

  1. 创建一个队列,用于存储数字
  2. 创建一个定时器,用于定时执行打印操作
  3. 每次打印后,将队列中的数字出队,同时将下一个数字入队

代码实现

// 定义一个队列类
class Queue {
  constructor() {
    this.items = []; // 用于存储队列中的元素
  }

  // 向队列中添加元素
  enqueue(element) {
    this.items.push(element);
  }

  // 从队列中移除前端元素
  dequeue() {
    if (this.isEmpty()) {
      return "Underflow"; // 如果队列为空,返回"Underflow"
    }
    return this.items.shift();
  }

  // 查看队列前端的元素
  front() {
    if (this.isEmpty()) {
      return "No elements in Queue"; // 如果队列为空,返回提示信息
    }
    return this.items[0];
  }

  // 检查队列是否为空
  isEmpty() {
    return this.items.length === 0;
  }

  // 获取队列的大小
  size() {
    return this.items.length;
  }

  // 打印队列元素
  printQueue() {
    let str = "";
    for (let i = 0; i < this.items.length; i++) {
      str += this.items[i] + " ";
    }
    return str;
  }
}

// 创建队列实例
const queue = new Queue();

// 定义一个函数来处理队列中的任务
function processQueue() {
  if (!queue.isEmpty()) {
    const task = queue.dequeue();
    const [time, value] = task;
    setTimeout(() => {
      console.log(value);
      processQueue(); // 处理下一个任务
    }, time);
  }
}

// 添加任务到队列
queue.enqueue([100000, 1]); // 100秒后打印1(100秒 = 100000毫秒)
queue.enqueue([200000, 2]); // 200秒后打印2
queue.enqueue([300000, 3]); // 300秒后打印3

// 开始处理队列
processQueue();
最后更新时间' 2025/3/25 07:37:15