JS数据结构初识(二)-队列

1、定义

队列是遵循FIFO(First In First Out,先进先出,也称为先来先服务)原则的一组有序的项。 队列在尾部添加新元素,并从顶部移除元素。最新添加的元素必须排在队列的末尾。 在现实中,最多见的队列的例子就是排队:bash

1、队列

// 先进先出
    function Queue() {
        const items = [];
        this.enqueue  = (...ele) => items.push(...ele);
        this.dequeue = () => items.shift();
        this.front = () => items[0];
        this.isEmpty = () => !items.length;
        this.size = () => items.length;
        this.print = () => console.log('items => ',items);
    }
    const queue = new Queue();
    queue.enqueue(1,2,3,4);
    queue.print();
复制代码

2、优先队列

// 优先队列: 优先数字大的
    function PriorityQueue(ele, priority) {
        const items = [];

        function QueueElement(ele, priority) {
            this.ele = ele;
            this.priority = priority;
        }

        this.enqueue = function(ele, priority) {
            const queueEle = new QueueElement(ele, priority);

            if (this.isEmpty()) {
                return items.push(queueEle);
            } 
            const index = items.findIndex((item) => queueEle < item.priority);
            index !== -1 ? items.splice(index, 0, queueEle) : items.push(queueEle);
            return items.length;
        }
    }
复制代码
相关文章
相关标签/搜索