用队列写出方块舞

本文介绍了一种基于队列管理的方块舞配对方案。通过创建男性和女性两个队列,每次从两个队列中各取出一人进行配对,并记录配对信息。当一方队列为空时,舞蹈结束。

方块舞

        当男男女女来到舞池,他们按照自己的性别排成两队。当舞池中有地方空出来时,选两个队列中的第一个人组成舞伴。他们身后的人各自向前移动一位,变成新的队首。当一对舞伴迈入舞池时,主持人会大声喊出他们的名字。当一对舞伴走出舞池,且两排队伍中有任意一队没人时,主持人也会把这个情况告诉大家。

<!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);
        else
            queueM.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>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值