位置:首页 > 软件操作教程 > 编程开发 > JavaScript > 问题详情

JavaScript 队列操作

提问人:刘团圆发布时间:2020-11-25

■知识点

    使用unshiftO和shift()方法可以在数组头部执行操作。其中unshift()能够把一个或多个参数值附加到数组的头部,第1个参数为数组新的元素0,第2个参数为新的元素1,以此类推,最后返回添加元素后的数组长度。

    shift()方法能够删除数组第1个元素,并返回该元素,然后将余下的所有元素前移一位,以填补数组头部的空缺。如果数组为空,shift()将不进行任何操作,返回undefined。

    队列也是一种运算受限的线性表,不过与栈操作不同,队列只允许在一端进行插入操作,在另一端进行删除操作。队列遵循先进先出、后进后出的原则,类似的行为在生活中比较常见,如排队购物,任务排序等。在JavaScript动画设计中,也会用到队列操作来设计回调函数。

■实例设计

    下面的示例是一个经典的编程游戏:有一群猴子排成一圈,按1、2、3、…、n依次编号,然后从第1只开始数,数到第m只,则把它踢出圈,然后从它后面再开始数,当再次数到第m只时,继续把它踢出圈,以此类推,直到只剩下一只猴子为止,那只猴子就叫作大王。要求编程模拟此过程,输入m、 n,输出最后那个大王的编号。

//n表示猴子的个数,m表示踢出的位置

function f(n, m){

    //将猴子编号放入数组 

    var arr =[]; 

    for (i = 1; i < n+1; i++){

       arr.push(i);

    }

    //当数组内只剩下一只猴子时跳出循环

    while(arr.length > 1){

        for (var i=0; i< m-1 ; i++) {       //定义排队轮转的次数

            arr.push (arr.shift());                  //队列操作,完成猴子的轮转

        }

        arr.shift();                                  //踢出第m只猴子

    }

    return arr;                                 //返回包含最后一只猴子的数组

}

console.log( f (5,3));                   //编号为4的猴子胜出

继续查找其他问题的答案?

相关视频回答
回复(0)
返回顶部