位置:首頁 > 軟件操作教程 > 編程開發(fā) > JavaScript > 問題詳情

JavaScript 隊列操作

提問人:劉團圓發(fā)布時間:2020-11-25

■知識點

    使用unshiftO和shift()方法可以在數(shù)組頭部執(zhí)行操作。其中unshift()能夠把一個或多個參數(shù)值附加到數(shù)組的頭部,第1個參數(shù)為數(shù)組新的元素0,第2個參數(shù)為新的元素1,以此類推,最后返回添加元素后的數(shù)組長度。

    shift()方法能夠刪除數(shù)組第1個元素,并返回該元素,然后將余下的所有元素前移一位,以填補數(shù)組頭部的空缺。如果數(shù)組為空,shift()將不進行任何操作,返回undefined。

    隊列也是一種運算受限的線性表,不過與棧操作不同,隊列只允許在一端進行插入操作,在另一端進行刪除操作。隊列遵循先進先出、后進后出的原則,類似的行為在生活中比較常見,如排隊購物,任務排序等。在JavaScript動畫設計中,也會用到隊列操作來設計回調函數(shù)。

■實例設計

    下面的示例是一個經典的編程游戲:有一群猴子排成一圈,按1、2、3、…、n依次編號,然后從第1只開始數(shù),數(shù)到第m只,則把它踢出圈,然后從它后面再開始數(shù),當再次數(shù)到第m只時,繼續(xù)把它踢出圈,以此類推,直到只剩下一只猴子為止,那只猴子就叫作大王。要求編程模擬此過程,輸入m、 n,輸出最后那個大王的編號。

//n表示猴子的個數(shù),m表示踢出的位置

function f(n, m){

    //將猴子編號放入數(shù)組 

    var arr =[]; 

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

       arr.push(i);

    }

    //當數(shù)組內只剩下一只猴子時跳出循環(huán)

    while(arr.length > 1){

        for (var i=0; i< m-1 ; i++) {       //定義排隊輪轉的次數(shù)

            arr.push (arr.shift());                  //隊列操作,完成猴子的輪轉

        }

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

    }

    return arr;                                 //返回包含最后一只猴子的數(shù)組

}

console.log( f (5,3));                   //編號為4的猴子勝出

繼續(xù)查找其他問題的答案?

相關視頻回答
回復(0)
返回頂部