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

  作者:bea

//循环队列 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 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;

}

}

}


有用  |  无用

猜你喜欢