队列遵循FIFO(First in First out, 先进先出),就犹如在食堂排队打饭,先排队者先打到饭。
就如小明最先排队打饭,小明最先打到饭,同理,小绿最后。
那么利用JavaScript来实现队列,很简单。
1.创建一个Queue类,在Queue里创建一个数组items,items是用于存储队列中元素的数据结构;
2.定义enqueue方法用于向队列添加新的元素;
3.定义dequeue方法用于从队列中移除项;(因为队列遵循先进先出,所以移除的是队列中排在最前面的元素)
4.定义front方法用于返回队列中的最前面的项;
5.定义isEmpty方法用于判断队列是否为空;
6.定义clear方法用于清除队列;
7.定义size方法用于返回队列的长度;
8.定义print方法用于打印队列。
代码如下:
效果如下:
这样,就利用JavaScript实现了队列。
有了这个基础,我们可以做一个具有优先权的队列。就比如,我们坐高铁,哗啦啦的一堆人挤上去,总不可能不按票价来坐位置吧。当然要一等座者坐一等座,二等座者坐二等座。这时候就需要优先权了。
就如优先值越小,优先权越大。排队时候是以下这样的。
实际上是这样的:
那通过JavaScript怎么实现呢?
1.定义一个数组items,用于存储队列中的项;
2.QueueElement类用于存储项的值以及优先权;
3.isEmpty方法用于返回队列的长度;
4.enqueue方法用于向队列中添加新的元素;
enqueue方法每调用一次,创建一个queueElement对象,如果如果队列为空,则直接添加。如果queueElement的优先值小于队列中的哪一项,则与哪一项调换位置,并使added为true。若queueElement的优先值比队列中的项都大,则added为false,直接添加到队列中。
5.print方法用于打印队列;
代码如下:
效果如下:
参考自《学习JavaScript数据结构与算法》