前端仔之理解数据结构二 队列

队列的特点:

        1、队列结构也是一种特殊的受限结构 FIFO (first in first out)

        2、受限之处在于它只允许在表的前端(front) 进行删除操作  (对应数组shift)

        3、 而在表的后端(rear) 进行插入操作

类似生活中例子:

        1、生活中的电影院 商场 甚至是厕所排队

        2、优先排队的人优先处理 后排队的后处理

        3、打印队列 等等

开发中的场景:

        1、为了让任务可以并行处理 通常开启多个线程。

        2、但是不可以让大量的线程同事运行处理任务 (内存、cpu会爆的)

        3、这个时候 我们就需要线程处理任务情况 这就是线程队列 让这些线程 依次按照顺序来启动 来处理任务

封装一个栈以及栈常见的操作:

        1、enqueue()插入操作 向尾部添加一个或者多个新的项目

        2、dequeue()删除操作 移除队列的第一个项 并返回被移除元素

        3、front()返回队列中的第一个元素————类似于stack 的peek

        4、isEmpty()判断是否为空

        5、size()返回队列的大小

        6、toString()将队列中的内容转换成字符串的形式

代码实现一下下

class Queue {
    constructor() {
        this.container = []
    }
    // 插入操作 向尾部添加一个或者多个新的项目
    enqueue(element) {
        this.container.push(element)
    }
    // 删除操作 移除队列的第一个项 并返回被移除元素
    dequeue() {
        return this.container.shift()
    }
    // 返回队列中的第一个元素————类似于stack 的peek
    front() {
        return this.container[0]
    }
    // 判断是否为空
    isEmpty() {
        return this.container.length == 0
    }
    // 返回队列的大小
    size() {
        return this.container.length
    }
    // 将队列中的内容转换成字符串的形式
    toString() {
        let str = ""
        for (let i = 0; i < this.container.length; i++) {
            str += this.container[i] + " "
        }

        return str;
    }
}

//给你们打印一下下
let queue = new Queue();

queue.enqueue('1')
queue.enqueue("bac")
queue.enqueue("abc")
queue.enqueue("cbd")

console.log(queue.container);

console.log(queue.isEmpty());

console.log(queue.front())

console.log(queue.dequeue())

console.log(queue.container);

console.log(queue.size())

queue.enqueue('1')

console.log(queue.toString())

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值