码迷,mamicode.com
首页 > 编程语言 > 详细

数据结构与算法 ----- 队列

时间:2017-12-25 19:35:02      阅读:255      评论:0      收藏:0      [点我收藏+]

标签:span   size   区别   清空   cto   enqueue   const   get   atm机   

  队列和栈类似,也是一种集合,只不过它遵循的原则是先进先出,这很好理解,想一想ATM机取款就可以了。先到的人,先取款,后面到的人只能等前面的人取款成功。所以队列的操作是从前面删除元素,后面插入元素,其它则和栈没有什么区别。它有以下几种操作:

  插入(enqueue):把一个元素插入到队列的后面;

  删除(dequeue): 把一个元素从队列的顶部删除;

  取出队列顶部的元素(front): 返回队列的顶部的元素;

  判队列空(isEmpty): 判断队列是否为空;

  清空队列(clear):把队列中所有的元素删除;

  队列的大小(size):返回队列中元素的个数;

  实现方式还是用数组

function queue() {
    let items = [];

    this.enqueue = function(elem) {     // 队列尾部添加元素
        items.push(elem);
    }
    this.dequeue = function(elem) {     // 队列头部删除元素
        return items.shift();
    }

    this.front = function () {           // 返回队列中的第一个元素
        return items[0];
    }

    this.isEmpty = function() {          // 队列是否为空
        return items.length === 0;
    }

    this.size = function() {             // 队列的大小
        return items.length;
    }

    this.print = function() {            // 打印队列
        console.log(items);
    }
}
// es6 的原型链方式
let queue2 = (function() {
    const items = new WeakMap();

    class Queque {
        constructor(){
            items.set(this, []);
        }

        enqueue(elem) {
            let q = items.get(this);
            q.push(elem);
        }

        dequeue() {
            let q = items.get(this);
            return q.shift();
        }
        front() {
            let q = items.get(this);
            return q[0];
        }
        isEmpty() {
            return items.get(this).length === 0;
        }
        size() {
            return items.get(this).length;
        }
        clear() {
            items.set(this, []);
        }
        print() {
            console.log(items.get(this))
        }
    }
    return Queque;
})()

  优先队列

  

 

数据结构与算法 ----- 队列

标签:span   size   区别   清空   cto   enqueue   const   get   atm机   

原文地址:https://www.cnblogs.com/SamWeb/p/8110501.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!