JS数据结构与算法之队列

264 阅读1分钟

介绍

队列与链表,栈为三种常见的线性数据结构。

队列是一种列表,不同的是队列只能在队尾插入元素,在队首删除元素。队列用于存储按顺序排列的数据,先进先出,与栈不同,栈中最后进入的会被优先处理(洗盘子)。

队列是一种先进先出的数据结构(FIFO)。被用在很多地方,比如进程池,打印任务池。我们经常使用的美团打车、滴滴打车中的排队叫车系统,就是一个队列系统。

image.png

常见的队列操作

对队列的主要操一般有两种:插入新元素和删除队列中的元素。插入操作一般叫做入队,删除操作叫做出队。入队在队尾,出队在队首。

插入方法一般叫做push

删除方法一般叫做shift

除此之外还有其他一些常见操作

peek() 读取队首元素

length() 查看队列中存储了多少元素

clear() 清空队列中的元素

empty() 判断队列是否为空

队列代码实现


class Queue {
    list: any[] = [];

    push = (val: any) => {
        this.list.push(val);
    };

    shift = () => {
        return this.list.shift();
    };

    peek = () => {
        const len = this.list.length;
        if (len) {
            return this.list[this.list.length - 1];
        }
        return null;
    };

    empty = () => {
        const len = this.list.length;
        if (len) {
            return true;
        }
        return false;
    };

    front = () => {
        return this.list[0];
    };

    toString = () => {
        return this.list.join(",");
    };
}


队列相关算法

(暂时占坑,后面补充)