事例演示地址:点这里
效果图:
一,基本队列
这是简单的队列的操作,
实现的功能:
1,往队列添加元素(enqueue):队尾添加数据。
2,出队列(outqueue):队头删除数据。
3,队列中的数据(print)
4,队列的指定index值(indexData):查询指定下标的队列中的值。
5,查看队列是否为空(empty):返回值 false,true。
6,查看队列的长度(sizes):
js代码:
function Queue(){
var items=[];
// 入栈
this.enqueue=function (element){
items.push(element);
}
// 出栈
this.outqueue=function () {
return items.shift();
}
// 打印队列
this.print =function (){
return items.toString()
}
// 队列的值
this.indexData=function(index){
return items[index]
}
// 队列是否为空
this.empty=function(){
return items.length==0
}
// 队列的长度
this.sizes=function(){
return items.length
}
}
// 初始化队列
var queue=new Queue ();
queue.enqueue('Hello');
queue.enqueue('Word');
queue.enqueue('!');
// 队列列表
function queuePrint (){
var dataPrint=queue.print();
document.getElementById('domo').innerHTML=dataPrint;
}
//添加队列
function addQueue(){
var data=document.getElementById('input').value;
queue.enqueue(data)
}
//出栈
function queueOut(){
var dataOut=queue.outqueue();
document.getElementById('out').innerHTML=dataOut;
}
//队列的index值
function queueSelect(){
var data=document.getElementById('select').value;
var dataSelect=queue.indexData(data);
document.getElementById('selectTag').innerHTML=dataSelect;
}
// 判断队列是否为空
function queueIsEmpty(){
var isEmpty=queue.empty();
var empty=isEmpty===true?'空队列':'非空队列';
document.getElementById('empty').innerHTML=empty;
}
// 队列长度
function queueSize(){
var data=queue.sizes();
document.getElementById('length').innerHTML=data;
}
二,循环队列
循环队列的步骤:
1,在forQueue(数据列表,循环的次数)传入两个参数。
2,在forQueue(nameList,num){
1,声明queue=基本队列。
2,使用for循环将nameList的数据添加到队列中。
3,使用whlie判断队列的数据大于1个,就会进行循环,循环的次数就是传入的num,
在循环中,queue.addQueue(queue.outQueue()),将出列的值在入列。
4,最终返回唯一一个队列的值
}
js代码:
//队列
function Queue(){
var items=[];
this. addQueue=function(element){
return items.push(element)
}
this.outQueue=function(){
return items.shift()
}
this.printQueue=function(){
return items.toString();
}
this.size=function(){
return items.length ;
}
}
//
function forQueue(nameList,num){
//初始化队列和淘汰者
losser=[];
var queue=new Queue();
// 将数据导入队列中
for(var i=0; i<nameList.length; i++){
queue.addQueue(nameList[i])
}
var outQueueData='';
// 当队列还存在值时,在循环中将出列的值在进行入列操作,循环结束将出列的淘汰者存在looser的数组中
while(queue.size()>1){
for(var i=0;i<num;i++){
queue.addQueue(queue.outQueue())
}
outQueueData=queue.outQueue();
console.log('失败者:'+outQueueData)
losser.push(outQueueData)
}
//返回最终队列的值
return queue.outQueue();
}
var nameList=['one','two','three','four','fine','six','server'];
var losser=[];
var num =0;
//list队列列表
function list(){
var queueList=nameList.toString();
document.getElementById('list').innerHTML=queueList;
}
//随机改变队列循环的次数
function changeNum(){
num=Math.floor(Math.random()*30);
console.log("m:"+num);
document.getElementById('num').innerHTML=num;
}
//开始
function begin(){
var winner=forQueue(nameList,num);
console.log("m:"+num);
console.log('胜利者:'+winner);
document.getElementById('winner').innerHTML=winner;
}
//looser列表
function looserPrint(){
var data=losser.toString();
document.getElementById('looser').innerHTML=data;
}
//添加n的数据
function addList(){
var data=document.getElementById('inputData').value;
nameList.push(data);
var queueList=nameList.toString();
document.getElementById('list').innerHTML=queueList;
}
事例的源码:点击这里
-------------------------------------------------------------------------------------------------------------------------------------------------------------------如遇到问题:+WX:WAZJ-0508,及时联系---------------------------------------------------------------------------------------------------------------------------------------------------