数据结构----队列结构Queue

目录

队列

优先级队列


队列

队列结构Queue的特性:一种受限的线性表,先进先出(FIFO),只允许在表的前端进行删除操作,在表的后端进行添加操作

距离:排队、打印

实现:

1.数组实现

2.链表实现

enqueue(el)    向队列尾部添加一个新的项

dequeue()       移出队列的第一项,并返回被移出的元素

front()              返回队列中的第一个元素

isEmpty()        队列是否为空,反馈布尔值

size()               返回队列包含元素的个数

toString()         将队列的内容转成字符串

3.案例:击鼓传花

 let arr=["a","b","c","d","e","f"]

    let q=new Queue(arr)

    function jgch(n){

        let count=0

        while(q.size()!=1){

            count++

            if(count!=n){

                // 将队列头部的数据放入队尾

                q.enqueue(q.dequeue())

            }else{

                // 删掉头部元素

                q.dequeue()

                count=0

            }

        }

        let item=q.front()

        return arr.indexOf(item)

    }

    console.log(jgch(3));

 

优先级队列

优先级队列:普通队列插入一个元素,数据往往放在后边,但是优先级队列会考虑插入元素的数据优先级

案例:登机的顺序、候诊室

问题:每个元素不再只是一个数据而且包含数据的优先级,在添加方式中,根据优先级放入正确的位置

实现:封装元素和优先级放在一起

           添加元素时,将新元素的优先级和队列中已经存在的优先级进行比较

priority 值越小代表优先级越高

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值