方块舞
当男男女女来到舞池,他们按照自己的性别排成两队。当舞池中有地方空出来时,选两个队列中的第一个人组成舞伴。他们身后的人各自向前移动一位,变成新的队首。当一对舞伴迈入舞池时,主持人会大声喊出他们的名字。当一对舞伴走出舞池,且两排队伍中有任意一队没人时,主持人也会把这个情况告诉大家。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>方块舞</title>
</head>
<body></body>
<script>function Danser(name,sex) {this.name = name;this.sex = sex;}function Queue() {this.dataStore = [];//进队列,从尾部添加数据this.enqueue = function (data) {this.dataStore.push(data);}//从队列头部删除数据,并且获得这个数据this.dequeue = function () {return this.dataStore.shift();}//获得队列最前面的数据this.front = function () {return this.dataStore[0];}//遍历队列this.forEach = function (call) {var length = this.dataStore.length;for(var i=0;i<length;i++)call(this.dataStore[i]);}}//创建男生和女生队列var queueM = new Queue();var queueF = new Queue();var dansers = [{name:'Allison McMillan',sex:'F'},{name:'Frank Opitz',sex:'M'},{name:'Mason McMillan',sex:'M'},{name:'Clayton Ruff',sex:'M'},{name:'Cheryl Ferenback',sex:'F'},{name:'Raymond Williams',sex:'M'},{name:'Jennifer Ingram',sex:'F'},{name:'Bryan Frazer',sex:'M'},{name:'David Durr',sex:'M'},{name:'Danny Martin',sex:'M'},{name:'Aurora Adney',sex:'F'}];var length = dansers.length;for(var i=0;i<length;i++) {var danser = new Danser(dansers[i].name,dansers[i].sex);if(dansers[i].sex=='F')queueF.enqueue(danser);elsequeueM.enqueue(danser);}//从队列头部删除数据,并且获得这个数据var dequeueM = queueM.dequeue();var dequeueF = queueF.dequeue();while(dequeueM!=null&&dequeueF!=null) {console.log("姓名:"+dequeueM.name+" 性别:"+dequeueM.sex+" 舞伴 "+" 姓名:"+dequeueF.name+" 性别:"+dequeueF.sex);dequeueM = queueM.dequeue();dequeueF = queueF.dequeue();if(dequeueF==null)console.log("女生配完,舞蹈结束");else if(dequeueM==null)console.log("男生配完,舞蹈结束");}</script>
</html>