隊(duì)列是什么?先進(jìn)先出,只能在隊(duì)列一端插入,另一段刪除。排隊(duì)不能插隊(duì),只能從隊(duì)尾排。打印文檔有個(gè)打印隊(duì)列,誰先來誰先打印出來。后者必須等待前者結(jié)束后才能進(jìn)行。
js特點(diǎn)是是單線程,引入了異步非阻塞式的事件循環(huán)機(jī)制。

Psromise - 微任務(wù)隊(duì)列 UI渲染等其他 - 宏任務(wù)
每一個(gè)宏任務(wù)執(zhí)行完檢查有沒有微任務(wù),沒有了再去執(zhí)行下一個(gè)宏任務(wù)
擊鼓傳花
1、隊(duì)列版本
function game(list, num){
????let queue = new Queue();
????for(let i = 0; i < list.length; i++){
? ???????? queue.enqueue(list[i]);
????}
????while(queue.size()>1){
????????? for (let j = 0; j < num; j++){
? ? ???????????? queue.enqueue(queue.dequeue());
????????????}
????????????queue.dequeue();
? ? ? }
????????return queue.dequeue();
}
2、通俗易懂版本
function josephus(list, step) {
? ????const arr = [...list];
? ????let index = 0;
? ????while (arr.length > 1) {
? ? ????????// 計(jì)算要淘汰的位置
? ? ????????index = (index + step - 1) % arr.length;
? ? ????????// 移除該元素
? ? ????????arr.splice(index, 1);
????? }
????? return arr[0];
}