队列

队列和栈相反,队列是一种先进先出(FIFO)的线性表。队列在尾部添加新元素,在顶部移除元素;应用于生活之中最常见的就是排队

1.队列的创建

由于队列是先进先出,可以根据js中数组提供的push()方法和shift()方法来实现

	function Queue(){
   	//创建一个队列的构造函数
   	var items=[];
    this.enqueue=function(element){
   		items.push(element);//向尾部添加新元素
   	};
   	this.dequeue=function(){
   		 return items.shift();//移除队列第一项,并返回被移除的元素
   	};
   	this.isEmpty=function(){
   		return items.length==0;//判断队列是否为空
    };
   	this.clear=function(){
   		items=[];//清空队列
   	};
   	this.size=function(){
   		return items.length;//返回队列的长度
   	};
   	this.front=function(){
   		return items[0];//返回队列的第一个元素
   };
   	this.print=function(){
   	  console.log(items.toString());
   };
};

队列的应用

1.优先队列

优先队列是指元素的添加或移除是基于优先级的:如买票,挂号等等

function MinPriorityQueue(){
   	var items=[];		
   	function QueueElement(element,priority){
   	  this.element=element;//创建了一个特殊的元素,这个元素中包含了要添加到队列的元素,以及他在队列中的优先级
      this.priority=priority;
    };
this.enqueue1=function(element,priority){
   	var queueElement=new QueueElement(element,priority);
   	if(this.isEmpty()){
   	   items.push(queueElement);//如果队列是空的,直接将元素入列即可
   	}else{
   		var added=false; //否则需要当前元素的优先级和其他元素的优先级进行比较,比添加的元素优先级更低的元素时,将其插入 并终止循环
       for(var i=0;i<items.length;i++){  					     
       if(queueElement.priority<items[i].priority){  
       items.splice(i,0,queueElement);
   	   added=true;
     	break;
   	}           						          	                  
   }
   		if(!added){
   		// 添加元素的优先级的值大于任意的已知元素时,直接添加到末尾即可
   		items.push(queueElement);
   		}
   	}
   };
}

2.循环队列

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值