需要滚动显示最多一定数量的信息,于弄了个这个

var LeesCircleQueue=function(size)
{
// 队列数组
var _queue=[]; // 队首索引
var _front=0; // 队尾索引
var _rear=0; // 元素个数
var _length=0; // 队列的内存大小,但实际可用大小为_capacity-1
var _capacity = size; // 添加元素
this.Push=function(item)
{
var nIndex = GetNextRearIndex();
_queue[nIndex] = item;
if (_length < _capacity)
_length++;
}
// 移除头部元素
this.Pop=function()
{
if (_length > 0)
{
_length--;
_front++;
if (_front == _capacity)
_front = 0;
}
if (_length == 0)
{
_front = _rear = 0;
}
}
// 获取全部内容
this.GetAllItem=function()
{
var tmp = [];
for (var i = 0; i < _length; i++)
{
tmp[i] = _queue[(_front + i) % _capacity];
}
return tmp;
}
// 获取下一个索引
function GetNextRearIndex()
{
if (_length == _capacity)//full
{
_rear = (_rear + 1) % _capacity;
_front = (_rear + 1) % _capacity;
}
else
{
if (_length > 0)
_rear = (_rear + 1) % _capacity;
else
{
_front = _rear = 0;
}
}
return _rear;
}
};

原创:Javascript循环队列类的更多相关文章

  1. Java实现一个简单的循环队列

    在某些时候,我们不能被要求像数组一样可以使用索引随机访问,而是需要被限制顺序处理业务,今天介绍一种先进先出(FIFO)的线性数据结构:队列, 当然,还有后进先出(LIFO)的处理方式,即为栈(后续有时 ...

  2. 数据结构-循环队列(Python实现)

    今天我们来到了循环队列这一节,之前的文章中,我介绍过了用python自带的列表来实现队列,这是最简单的实现方法. 但是,我们都知道,在列表中删除第一个元素和删除最后一个元素花费的时间代价是不一样的,删 ...

  3. 使用 JavaScript 实现基本队列、优先队列和循环队列

    1.基本队列的实现 基本队列的方法中,包含了 ①向队列(尾部)中添加元素(enqueue).②(从队列头部)删除元素(dequeue).③查看队列头部的元素(front).④查看队列是否为空(isEm ...

  4. JavaScript数据结构与算法(四) 循环队列的实现

    实现击鼓传花,需要用到上一章所述队列类Queue TypeScript方式实现源码 let hotPotato = (nameList, num) => { let queue = new Qu ...

  5. [原创]Javascript模拟“类”的综合实现方式以及部分细节【截至ES6】

    [原创]Javascript模拟“类”的综合实现方式以及部分细节[截至ES6] 前言   最近几个旧项目里使用的图片编辑插件出现Bug, 经Review 后确定需要在其内外均做些改动,但是头疼的发现部 ...

  6. javascript实现数据结构与算法系列:队列 -- 链队列和循环队列实现及示例

    1 队列的基本概念 队列(Queue):也是运算受限的线性表.是一种先进先出(First In First Out ,简称FIFO)的线性表.只允许在表的一端进行插入,而在另一端进行删除. 队首(fr ...

  7. Javascript数据结构与算法--队列(顺序队列、优先队列、循环队列)的实现与用法

    前言 队列和栈非常类似,前面已经讲过了栈的实现与用法,现在我们来说说队列. 队列介绍 队列遵循FIFO(First In First Out,先进先出)原则的一组有序的项. 队列是一种特殊的线性表,特 ...

  8. 622.设计循环队列 javascript实现

    设计你的循环队列实现. 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环.它也被称为“环形缓冲器”. 循环队列的一个好处是我们可以利用这个队列 ...

  9. JavaScript数据结构——队列的实现与应用

    队列与栈不同,它遵从先进先出(FIFO——First In First Out)原则,新添加的元素排在队列的尾部,元素只能从队列头部移除. 我们在前一篇文章中描述了如何用JavaScript来实现栈这 ...

随机推荐

  1. C/C++开发工具大比拼【转】

    C/C++开发工具大比拼[转]  (http://hi.baidu.com/vipdowndown/blog/item/dcd7c1b5ad3209ef30add167.html) * NetBean ...

  2. mysqldump原理2

    本文主要探讨 mysqldump 的几种主要工作方式,并且比较一下和 mk-parralel-dump的一些差异,为备份方式的选择提供更多的帮助. 首先来看下 mysqldump 的几个主要参数的实际 ...

  3. Java Annotations: Explored & Explained--转载

    原文地址:http://www.javacodegeeks.com/2012/08/java-annotations-explored-explained.html One of the many w ...

  4. void及void指针含义的深刻解析

    http://blog.csdn.net/geekcome/article/details/6249151 ----------- void的含义 void即“无类型”,void *则为“无类型指针” ...

  5. Android版本控制系统及其间的差异

    一.何谓版本控制 它是一种软件工程籍以在开发的过程中,确保由不同人所编辑的同一档案都得到更新,它透过文档控制记录程序各个模块的改动,并为每次改动编上序号,并且编辑错误之后还可以回溯到以前的版本 二.可 ...

  6. CSS3——选项卡切换

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. android 按两次返回键退出应用

    private long mExitTime; @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCod ...

  8. Python(2.7.6) 特殊方法

    在 Python 中有种特殊方法,也称为魔法方法.特殊方法的方法名的前后各有两个下划线,如__init__,这种拼写表示名字有特殊的意义.如果类实现了这些方法中的某一个,那么这个方法会在特殊的情况下被 ...

  9. android NDK 笔记

    *************************************************华丽的分割线********************************************* ...

  10. 40个Java集合面试问题和答案【上】【转载】

    1.Java集合框架是什么?说出一些集合框架的优点? 每种编程语言中都有集合,最初的Java版本包含几种集合类:Vector.Stack.HashTable和Array.随着集合的广泛使用,Java1 ...