您的位置:首页 > Web前端 > JavaScript

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

2010-01-23 11:01 716 查看
//循环队列
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;
    }
 }
 
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: