数据结构中的队列

介绍

队列(Queue)是一种受限的线性表,先进先出(FIFO First In First Out)

为什么说队列是一种受限的线性表呢?
因为队列只允许在表的前端(front)进行删除操作,而进行插入操作只能在表的后端(rear)

在生活中也有许多地方类似于队列结构:
比如在电影院排队买票,先排队的人先买票先离开,而后面的人要通过排队才能买到票。这就类似于队列的先进先出。

队列的示意图:
请添加图片描述

应用

队列在程序中也是十分常见的,例如:

  • 打印队列:假如有5份文档需要打印,这些文档会按照次序放入到打印队列中。打印机依次从队列中取出文档,先放入的文档先被取出,然后对文档进行打印。以此类推,直到队列中不再有新的文档。
  • 线程队列:在开发中,为了让任务可以并行处理,通常会开启多个线程,但是我们不能让大量的线程同时运行处理任务,所以这个时候就会使用到线程队列。线程队列会依次开启动线程,并且处理对应的任务。

JavaScript中常见的操作队列方法

在这里插入图片描述

优先队列

优先队列也是一种队列结构,但是它强调了“优先”二字,所以,已经不能算是一般意义上的队列了,它的“优先”意指取队首元素时,有一定的选择性,即根据元素的属性选择某一项值最优的出队。

特点

  • 普通队列插入一个元素,数据会被放到队列的后端,而优先队列在插入元素时会考虑该数据的优先级。在插入元素的过程中元素之间会进行优先级的比较,比较完成后再进行排序,优先级越高排在越前面。
  • 每个元素不再只是一个数据,而且包含数据的优先级。

应用

计算机中,我们可以通过优先级队列来重新排序队列中任务的顺序。比如每个线程处理的任务重要性不同,我们可以通过优先级的大小,来决定该线程在队列中被处理的次序。

举一个现实中的例子:
医院的候诊室,一般情况下是按照排号的顺序来进行候诊的,但是如果来了一个病情比较严重的病人,医生就会先优先处理病情比较严重的病人。在这里这名病情较严重的病人就相当于一个优先级高的元素。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值