数据结构之队列(Queue)

147 阅读1分钟

队列

1. 概念

与栈相反,队列是一种遵循先进先出 (FIFO / First In First Out) 原则的一组有序的项;队列在尾部添加新元素,并从头部移除元素。最新添加的元素必须排在队列的末尾。

2. 特点:

先进先出

3. 生活中的案例:

常见的排队,在电影院也好,排队结账也是,排在第一位的人会先接受服务。

4.与栈的区别

队列的操作方式和堆栈类似,唯一的区别在于队列只允许新数据在后端进行添加。

实现:

class Queue {
    constructor(items) {
        this.items = items || [];
    }
    // 排队
    enqueue(element) {
        this.items.push(element);
    }
    // 离队
    dequeue() {
        return this.items.shift();
    }
    // 第一位
    front() {
        return this.items[0];
    }
    // 清除队列
    clear() {
        this.items = [];
    }
    // 获取队列长度
    get size() {
        return this.items.length;
    }
    // 队列是否为空
    get isEmpty() {
        return !this.items.length;
    }
    // 打印整个队列
    print() {
        console.log(this.items.toString());
    }
}

const queue = new Queue();
console.log(queue.isEmpty); // true

queue.enqueue("John");
queue.enqueue("Jack");
queue.enqueue("Camila");
console.log(queue.size); // 3
console.log(queue.isEmpty); // false
queue.dequeue();
queue.dequeue();
queue.print(); // 'Camila'