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

<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);

js队列的实现问题的更多相关文章

  1. js 队列和事件循环

    1.示例代码 <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UT ...

  2. 简单的js队列

    简单的js队列 /** * [Queue] * @param {[Int]} size [队列大小] */ function Queue(size) { var list = []; //向队列中添加 ...

  3. js队列

    用指针和数组模拟基本队列 http://blog.csdn.net/zhuwq585/article/details/53177192 js下的事件队列,或者异步队列 http://www.jb51. ...

  4. js 队列

    js 中的异步队列(micro & macro) js都是靠事件驱动的, js中的事件循环机制是什么呢? 只是简单写一下自己的理解, 所以不是很全面; js 程序执行有 主队列 以及 异步队列 ...

  5. 一个简单的js队列,逻辑很清晰

    function Queue(type) { //type 是否是一个接着一个执行 function QueueConst() {} QueueConst.execute_ing=[], QueueC ...

  6. 写js写傻了,明天研究一下异步

    在html某元素上绑定一个click事件,该事件是一个执行事件很长的函数,比如执行几十亿或几百亿次加法,那么在这个函数执行的过程中,其他元素绑定的事件,是如何触发的呢,异步触发还是同步,触发时是怎么执 ...

  7. 队列的实现 -- 数据结构与算法的javascript描述 第五章

    队列也是列表的一种,有不同于列表的规则. 先进先出 入队方法 出队方法 可以找到队首 可以找到队尾 可以查看队列有多长 可以查看队列是否为空 这是一个基本的需求,围绕他来实现,当然我们可以自己扩展列表 ...

  8. 试着讲清楚:js代码运行机制

    一. js运行机制 js执行引擎 经常看文章的说到js是带线程的,其实这个说法非常的模糊,准确的是js执行引擎是单线程的,js执行引擎就是js代码的执行器,有了这个概念就可以下来说说js是如何运行的了 ...

  9. AJAX原理及XMLHttpRequest对象分析

    今天的主题是前端都了解的AJAX,但其中都有哪些知识点,还需要深入分析. 首先揭示AJAX的字面意思,Asynchronous Javascript And XML,通俗点就是“异步Javascrip ...

随机推荐

  1. Java多线程中run(), start(), join(), wait(), yield(), sleep()的使用

    Run 每个Thread中需要实现的方法, 如果直接调用的话, 会是和单线程一样的效果, 要另起线程需要使用start(). start 新起线程调用run(). 主线程不等待直接往下执行 Yield ...

  2. 微信小程序--搜索关键词高亮

    代码地址如下:http://www.demodashi.com/demo/14249.html 一.前期准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.co ...

  3. JavaScript原生实现《贪吃蛇》

    概述 JavaScript原生实现<贪吃蛇>,每吃掉一个食物,蛇的身体会变长,食物会重新换位置. 详细 代码下载:http://www.demodashi.com/demo/10728.h ...

  4. JSP,servlet和数据库之间传值出现乱码的问题

     近期困扰我非常久的一个问题最终攻克了,为他我头疼了好几天,问题是JSP通过servlet向数据库传值,查询显示在页面的时候出现了乱码,原先我数据库中有两行带有中文的数据,查询的时候倒是没有出现乱 ...

  5. android API之android.text.TextWatcher

    When an object of a type is attached to an Editable, its methods will be called when the text is cha ...

  6. archlinux使用sudo

    Sudo是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等.这样不仅减少了root用户的登陆 和管理时间,同样也提高了安全性. Sudo不是对she ...

  7. RabbitMQ消息队列的小伙伴: ProtoBuf(Google Protocol Buffer) [转]

    什么是ProtoBuf? 一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化.它很适合做数据存储或 RPC 数据交换格式.可用于通讯协议.数据存储等领域的语言无关.平台无关.可扩 ...

  8. 页面livereload width grunt

    step-1.   安装node 环境 step-2.  npm  install grunt-cli  \ grunt http://www.gruntjs.net/docs/getting-sta ...

  9. Python练习笔记——斐波那契数列

    斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一 ...

  10. DBA_实践指南系列9_Oracle Erp R12应用补丁AutoPatch/AutoControl/AutoConfig(案例)

    2013-12-09 Created By BaoXinjian