zoukankan      html  css  js  c++  java
  • js队列的实现问题

    所谓队列就是排队的序列问题,有出有进,比如在银行排队办理业务,一般都是前一个办理完成后下一个自动进入队列

    <script>  /*

     * 模拟队列

     */

    var Qu ={};

    //构造函数

    Qu.Queue = function (len) {

        this.capacity = len;        //队列最大容量

        this.list = new Array();    //队列数据

    };

    //入队

    Qu.Queue.prototype.enqueue = function (data) {

        if (data == null) return;

        if(this.list.length>=this.capacity)

        {

            this.list.remove(0);

        }

        this.list.push(data);

    };

    //出队

    Qu.Queue.prototype.dequeue = function () {

        if (this.list == null) return;

        this.list.remove(0);

    };

    //队列长度

    Qu.Queue.prototype.size = function () {

        if (this == null) return;

        return this.list.length;

    };

    //队列是否空

    Qu.Queue.prototype.isEmpty = function () {

        if (this == null|this.list==null) return false;

        return this.list.length>0;

    };

    //对象数组扩展remove

    Array.prototype.remove = function(dx) {

        if (isNaN(dx) || dx > this.length) {

            return false;

        }

        for (var i = 0, n = 0; i < this.length; i++) {

            if (this[i] != this[dx]) {

                this[n++] = this[i]

            }

        }

        this.length -= 1

    }

      

    调用例子:

    //队列初始化

    var queue = new Qu.Queue(10);

    queue.enqueue(1);

    queue.enqueue(2);

    queue.enqueue(3); </script>

    /*

     * 模拟队列

     */

    var Qu ={};

    //构造函数

    Qu.Queue = function (len) {

        this.capacity = len;        //队列最大容量

        this.list = new Array();    //队列数据

    };

    //入队

    Qu.Queue.prototype.enqueue = function (data) {

        if (data == null) return;

        if(this.list.length>=this.capacity)

        {

            this.list.remove(0);

        }

        this.list.push(data);

    };

    //出队

    Qu.Queue.prototype.dequeue = function () {

        if (this.list == null) return;

        this.list.remove(0);

    };

    //队列长度

    Qu.Queue.prototype.size = function () {

        if (this == null) return;

        return this.list.length;

    };

    //队列是否空

    Qu.Queue.prototype.isEmpty = function () {

        if (this == null|this.list==null) return false;

        return this.list.length>0;

    };

    ?

    //对象数组扩展remove

    Array.prototype.remove = function(dx) {

        if (isNaN(dx) || dx > this.length) {

            return false;

        }

        for (var i = 0, n = 0; i < this.length; i++) {

            if (this[i] != this[dx]) {

                this[n++] = this[i]

            }

        }

        this.length -= 1

    }

      

    调用例子:

    //队列初始化

    var queue = new Qu.Queue(10);

    queue.enqueue(1);

    queue.enqueue(2);

    queue.enqueue(3);

  • 相关阅读:
    Android 学习笔记之WebService实现远程调用+内部原理分析...
    Android学习笔记之Json的使用....
    Android学习笔记之DocumentBuilder的使用....
    Android学习笔记之ExecutorService线程池的应用....
    Android学习笔记之SoftReference软引用...
    windows系统获取进程的pid号并终止
    Linux系统的时间比北京时间慢12个小时的处理方案(将EDT时区改为CST)
    将java的jar包作为windows的服务来启动
    linux初始化shell脚本
    linux中网络部分的总结
  • 原文地址:https://www.cnblogs.com/dearxinli/p/3595651.html
Copyright © 2011-2022 走看看