用队列写出方块舞

方块舞

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

<!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>

猜你喜欢

转载自blog.csdn.net/qq_34607371/article/details/81101858
今日推荐