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

JavaScript 隊(duì)列操作

提問(wèn)人:劉團(tuán)圓發(fā)布時(shí)間:2020-11-25

■知識(shí)點(diǎn)

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

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

    隊(duì)列也是一種運(yùn)算受限的線性表,不過(guò)與棧操作不同,隊(duì)列只允許在一端進(jìn)行插入操作,在另一端進(jìn)行刪除操作。隊(duì)列遵循先進(jìn)先出、后進(jìn)后出的原則,類似的行為在生活中比較常見,如排隊(duì)購(gòu)物,任務(wù)排序等。在JavaScript動(dòng)畫設(shè)計(jì)中,也會(huì)用到隊(duì)列操作來(lái)設(shè)計(jì)回調(diào)函數(shù)。

■實(shí)例設(shè)計(jì)

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

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

function f(n, m){

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

    var arr =[]; 

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

       arr.push(i);

    }

    //當(dāng)數(shù)組內(nèi)只剩下一只猴子時(shí)跳出循環(huán)

    while(arr.length > 1){

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

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

        }

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

    }

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

}

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

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

相關(guān)視頻回答
回復(fù)(0)
返回頂部