Queue

  • 队列就是用来形容一种先入先出的数据结构

    普通队列

    1. // 队列
    2. class Queue {
    3. constructor(){
    4. this.queueList = [];
    5. }
    6. // 进队
    7. push(val){
    8. this.queueList.push(val);
    9. return this.queueList;
    10. }
    11. // 出队
    12. output(val){
    13. this.queueList.shift();
    14. return this.queueList;
    15. }
    16. // 清空队列中的所有任务
    17. clear(){
    18. this.queueList.length = 0;
    19. }
    20. }

    优先级队列 就是插入的时候会有个优先级,来决定插入的位置

    ```javascript class QueueList { constructor(element,priority){
    1. this.element = element;
    2. this.priority = priority;
    } } // 优先级队列 class Queue { constructor(){
    1. this.queueList = [];
    } // 入队 enqueue(element,priority){
    1. // 实例化生成对象
    2. var ele = new QueueList(element,priority);
    3. // 判断入栈时 queuelist数组是否为空
    4. if(this.queueList.length<1){
    5. // 如果数组是空的话,那么直接往里面添加元素
    6. this.queueList.push(ele);
    7. }else{
    8. // 设置标识
    9. let flag = false;
    10. // 如果不为空,添加新元素的时候需要判断优先级
    11. this.queueList.forEach( (item,index) => {
    12. if(ele.priority<item.priority){
    13. // 如果要添加的元素优先级高的话,那么将其添加到对应的位置
    14. // 并且结束循坏
    15. this.queueList.splice(index,0,ele);
    16. // 改变标识
    17. flag = !flag;
    18. break;
    19. }
    20. })
    21. // 如果flag没有变化的话则证明要添加的元素优先级不高,添加到后面就行了
    22. if(!flag){
    23. this.queueList.push(ele);
    24. }
    25. }
    } show(){
    1. // 显示当前队列
    2. for(let key in this.queueList){
    3. console.log(`${this.queueList[key].priority} --->v ${this.queueList[key].element}`);
    4. }
    } }

module.exports = Queue

```