javascript中利用数组实现的循环队列代码


Posted in Javascript onJanuary 24, 2010

//循环队列
function CircleQueue(size){
this.initQueue(size);
}
CircleQueue.prototype = {
//初始化队列
initQueue : function(size){
this.size = size;
this.list = new Array();
this.capacity = size + 1;
this.head = 0;
this.tail = 0;
},
//压入队列
enterQueue : function(ele){
if(typeof ele == "undefined" || ele == ""){
return;
}
var pos = (this.tail + 1) % this.capacity;
if(pos == this.head){//判断队列是否已满
return;
}else{
this.list[this.tail] = ele;
this.tail = pos;
}
},
//从队列中取出头部数据
delQueue : function(){
if(this.tail == this.head){ //判断队列是否为空
return;
}else{
var ele = this.list[this.head];
this.head = (this.head + 1) % this.capacity;
return ele;
}
},
//查询队列中是否存在此元素,存在返回下标,不存在返回-1
find : function(ele){
var pos = this.head;
while(pos != this.tail){
if(this.list[pos] == ele){
return pos;
}else{
pos = (pos + 1) % this.capacity;
}
}
return -1;
},
//返回队列中的元素个数
queueSize : function(){
return (this.tail - this.head + this.capacity) % this.capacity;
},
//清空队列
clearQueue : function(){
this.head = 0;
this.tail = 0;
},
//判断队列是否为空
isEmpty : function(){
if(this.head == this.tail){
return true;
}else{
return false;
}
}
}

Javascript 相关文章推荐
JavaScript高级程序设计 阅读笔记(十八) js跨平台的事件
Aug 14 Javascript
js解决弹窗问题实现班级跳转DIV示例
Jan 06 Javascript
JavaScript日期时间与时间戳的转换函数分享
Jan 31 Javascript
jquery实现像栅栏一样左右滑出式二级菜单效果代码
Aug 24 Javascript
AngularJS 视图详解及示例代码
Aug 17 Javascript
vue学习笔记之v-if和v-show的区别
Sep 20 Javascript
2种简单的js倒计时方式
Oct 20 Javascript
vue 项目打包通过命令修改 vue-router 模式 修改 API 接口前缀
Jun 13 Javascript
解决vue同一slot在组件中渲染多次的问题
Sep 06 Javascript
vuejs移动端实现div拖拽移动
Jul 25 Javascript
Vue 自定义标签的src属性不能使用相对路径的解决
Sep 17 Javascript
Vue退出登录时清空缓存的实现
Nov 12 Javascript
document.getElementById为空或不是对象的解决方法
Jan 24 #Javascript
JavaScript 未结束的字符串常量常见解决方法
Jan 24 #Javascript
php gethostbyname获取域名ip地址函数详解
Jan 24 #Javascript
setTimeout与setInterval在不同浏览器下的差异
Jan 24 #Javascript
js 模拟实现类似c#下的hashtable的简单功能代码
Jan 24 #Javascript
jQuery 1.4 15个你应该知道的新特性(译)
Jan 24 #Javascript
优化javascript的执行速度
Jan 23 #Javascript
You might like
PHP 5.3 下载时 VC9、VC6、Thread Safe、Non Thread Safe的区别分析
2011/03/28 PHP
用PHP+MySQL搭建聊天室功能实例代码
2012/08/20 PHP
解决Laravel5.2 Auth认证退出失效的问题
2019/10/14 PHP
JS和函数式语言的三特性
2014/03/05 Javascript
Jquery技巧(必须掌握)
2016/03/16 Javascript
JavaScript驾驭网页-获取网页元素
2016/03/24 Javascript
JS中使用变量保存arguments对象的方法
2016/06/03 Javascript
Ubuntu 16.04 64位中搭建Node.js开发环境教程
2016/10/19 Javascript
jQuery实现拖动剪裁图片作为头像
2016/12/28 Javascript
微信小程序之MaterialDesign--input组件详解
2017/02/15 Javascript
使用jQuery和ajax代替iframe的方法(详解)
2017/04/12 jQuery
Vue 实现展开折叠效果的示例代码
2018/08/27 Javascript
JavaScript展开操作符(Spread operator)详解
2019/07/20 Javascript
一篇文章弄懂javascript中的执行栈与执行上下文
2019/08/09 Javascript
Vue-drag-resize 拖拽缩放插件的使用(简单示例)
2019/12/04 Javascript
javascript实现滚动条效果
2020/03/24 Javascript
Node.js API详解之 assert模块用法实例分析
2020/05/26 Javascript
JavaScript如何实现图片处理与合成
2020/05/29 Javascript
[02:35]DOTA2超级联赛专访XB 难忘一年九冠称王
2013/06/20 DOTA
[02:04]2020年夜魇暗潮预告片
2020/10/30 DOTA
Python中多线程及程序锁浅析
2015/01/21 Python
15行Python代码实现网易云热门歌单实例教程
2019/03/10 Python
Scrapy实现模拟登录的示例代码
2021/02/21 Python
CSS3改变浏览器滚动条样式
2019/01/04 HTML / CSS
英国最大的电子零件及配件零售商:Partmaster
2017/04/24 全球购物
JD Sports比利时官网:英国领先的运动鞋和运动服饰零售商
2018/10/10 全球购物
台湾租车首选品牌:IWS艾维士租车
2019/05/03 全球购物
介绍一下结构化程序设计方法和面向对象程序设计方法的区别
2012/06/27 面试题
Final类有什么特点
2012/04/25 面试题
计算机网络工程专业职业生涯规划书
2014/03/10 职场文书
党支部半年考察意见
2015/06/01 职场文书
2016关于军训的心得体会
2016/01/11 职场文书
nginx简单配置多个server的方法
2021/03/31 Servers
golang在GRPC中设置client的超时时间
2021/04/27 Golang
pyqt5打包成exe可执行文件的方法
2021/05/14 Python
HTML5 语义化标签(移动端必备)
2021/08/23 HTML / CSS