三、队列

  1. 名词解释:队列是遵循FIFO(First In First Out,先进先出,也称为先来先服务)原则的一组有序的项。队列在尾部添加新元素,并从顶部移除元素。最新添加的元素必须排在队列的末尾。
  2. 创建队列:
    1. 数组arr存储队列的元素,类QUeue()含有队列的方法
    2. 队列的功能:
      1. enqueue():向队列尾部添加一个或多个元素
        enqueue() {
            let a = arr.get(this) //向对内添加数据
            let ele = arguments;
            if (ele) {
                for (let i = 0; i < ele.length; i++) {
                    a.push(ele[i]);
                    }
                }
        };     
      2. dequeue():移除队列的第一项,并返回被移除的元素。
        dequeue() {
            let a = arr.get(this)
            return a.shift();
        };
      3. front():根据参数返回队尾元素(1)或队首元素(0)。
        front(num) {
            let a = arr.get(this)
            if (num === 0) {
                return a[0];
            } else if (num === 1) {
                return a[a.length - 1];
            }
            console.log('Please enter 0 or 1 !');
        }; 
      4. isEmpty():判断队列中元素是否存在。
        isEmpty() {
            let a = arr.get(this)
            return a.length == 0;
        };
      5. clear():清空队列的元素。
        clear() {
            let a = arr.get(this)
            a = [];
        };
      6. size():返回队列中的元素个数。
        size() {
            let a = arr.get(this)
            return a.length;
        };
      7. print():在控制台输出栈里的元素。
        print() {
            let a = arr.get(this)
            console.log(a.toString());
        }
      8. indexOf(): 查找元素是否在栈中,如果存在返回下标,不存在返回false。
        indexOf(ele) {
            let a = arr.get(this)
             return a.indexOf(ele) != -1 ? a.indexOf(ele) : false;
        }
  3. 优先队列
    1. 名词解释:队列中元素的添加和修改是基于元素的优先级。
      push() {
          let a = arr.get(this) //向栈内添加数据
          let ele = arguments;
          if (ele) {
              for (let i = 0; i < ele.length; i++) {
                  if (a.length) {
                      for (let j = 0; j < a.length; j++) {
                          if (ele[i][1] < a[j][1]) {
                              a.splice(j, 0, ele[i]);
                              break
                          } else {
                              a.splice(j + 1, 0, ele[i])
                              break
                          }
                      }
                  } else {
                      a.push(ele[i])
                  }
              }
          }
      };
      stack.push(['a', 1], ['b', 2], ["c", 1]);    //给元素添加优先级,从小到大排列。
  4. 循环队列:队列形成了一个完整的闭环。

 

 

 

 

 

 

 

 

 

       

 

posted @ 2018-12-05 16:39  道鼎金刚  阅读(135)  评论(0)    收藏  举报