国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

在JavaScript中的數(shù)據(jù)結(jié)構(gòu)(隊(duì)列)

這篇具有很好參考價(jià)值的文章主要介紹了在JavaScript中的數(shù)據(jù)結(jié)構(gòu)(隊(duì)列)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

在JavaScript中的數(shù)據(jù)結(jié)構(gòu)(隊(duì)列)


什么是隊(duì)列?

當(dāng)我們?cè)跒g覽器中打開新標(biāo)簽時(shí),就會(huì)創(chuàng)建一個(gè)任務(wù)隊(duì)列。這是因?yàn)槊總€(gè)標(biāo)簽都是單線程處
理所有的任務(wù),它被稱為事件循環(huán)。瀏覽器要負(fù)責(zé)多個(gè)任務(wù),如渲染HTML,執(zhí)行JavaScript代碼,處理用戶交互(用戶輸入、鼠標(biāo)點(diǎn)擊等),執(zhí)行和處理異步請(qǐng)求。

隊(duì)列(Queue)是一種具有先進(jìn)先出(FIFO, First-In-First-Out)特性的數(shù)據(jù)結(jié)構(gòu),它可以用于在計(jì)算機(jī)程序中管理和存儲(chǔ)元素。在JavaScript中,可以使用數(shù)組(Array)或鏈表(Linked List)等數(shù)據(jù)結(jié)構(gòu)來(lái)實(shí)現(xiàn)隊(duì)列。

其實(shí)可以用窗口排隊(duì)打飯為案例,先來(lái)的先排隊(duì)打飯。
在JavaScript中的數(shù)據(jù)結(jié)構(gòu)(隊(duì)列)


創(chuàng)建隊(duì)列

隊(duì)列主要有兩個(gè)基本操作: 入隊(duì)(enqueue)和出隊(duì)(dequeue)。在隊(duì)列中,新元素被添加到隊(duì)列末尾,并等待其他已存在的元素被處理后才能被移除。當(dāng)刪除元素時(shí),總是從隊(duì)首開始移除元素。

新建隊(duì)列

創(chuàng)建類來(lái)表示一個(gè)隊(duì)列,先從最基本的聲明類開始:

function Queue() { 
 //這里是屬性和方法
} 

需要一個(gè)用于存儲(chǔ)隊(duì)列中元素的數(shù)據(jù)結(jié)構(gòu),使用數(shù)組,(Queue類和Stack類非常類似,只是添加和移除元素的原則不同):

function Queue() { 
 //用于存儲(chǔ)隊(duì)列中元素的數(shù)據(jù)結(jié)構(gòu)
 let items = []; 
 //這里是屬性和方法
} 

隊(duì)列可用的方法

  • enqueue(element(s)):向隊(duì)列尾部添加一個(gè)(或多個(gè))新的項(xiàng)。
  • dequeue():移除隊(duì)列的第一(即排在隊(duì)列最前面的)項(xiàng),并返回被移除的元素。
  • front():返回隊(duì)列中第一個(gè)元素——最先被添加,也將是最先被移除的元素。隊(duì)列不
    做任何變動(dòng)(不移除元素,只返回元素信息——與Stack類的peek方法非常類似)。
  • isEmpty():如果隊(duì)列中不包含任何元素,返回true,否則返回false。
  • size():返回隊(duì)列包含的元素個(gè)數(shù),與數(shù)組的length屬性類似。

隊(duì)列添加元素

首先要實(shí)現(xiàn)的是enqueue方法。這個(gè)方法負(fù)責(zé)向隊(duì)列添加新元素。這里有一個(gè)非常重要的細(xì)
節(jié),新的項(xiàng)只能添加到隊(duì)列末尾:

this.enqueue = function(element){ 
 items.push(element); 
}; 

隊(duì)列移除元素

接下來(lái)要實(shí)現(xiàn)dequeue方法。這個(gè)方法負(fù)責(zé)從隊(duì)列移除項(xiàng)。由于隊(duì)列遵循先進(jìn)先出原則,
最先添加的項(xiàng)也是最先被移除的??梢杂胹hift方法,shift方法會(huì)從數(shù)組中移除存儲(chǔ)在索引0(第一個(gè)位置)的元素:

this.dequeue = function(){ 
 return items.shift(); 
};

只有enqueue方法和dequeue方法可以添加和移除元素,這樣就確保了Queue類遵循先進(jìn)先
出原則。

隊(duì)列查看元素

查看隊(duì)列頭元素

現(xiàn)在來(lái)為我們的類實(shí)現(xiàn)一些額外的輔助方法。如果想知道隊(duì)列最前面的項(xiàng)是什么,可以用
front方法。這個(gè)方法會(huì)返回隊(duì)列最前面的項(xiàng)(數(shù)組的索引為0):

this.front = function(){ 
 return items[0]; 
};
檢查隊(duì)列是否為空

可以直接使用length == 0判斷,如果隊(duì)列為空,它會(huì)返回true,否則返回false):

this.isEmpty = function(){ 
 return items.length == 0; 
}; 
檢查隊(duì)列的長(zhǎng)度

類似于數(shù)組的length屬性,我們也能實(shí)現(xiàn)隊(duì)列的length。對(duì)于集合,最好用size代替length。
因?yàn)殛?duì)列的內(nèi)部使用數(shù)組保存元素,所以能簡(jiǎn)單地返回隊(duì)列的長(zhǎng)度:

this.size = function(){ 
 return items.length; 
};
打印隊(duì)列元素

為了檢查隊(duì)列元素,實(shí)現(xiàn)一個(gè)輔助方法print。把隊(duì)列元素都輸出到控制臺(tái):

this.print = function(){ 
 console.log(items.toString()); 
}; 

完整隊(duì)列代碼

function Queue() { 
 //用于存儲(chǔ)隊(duì)列中元素的數(shù)據(jù)結(jié)構(gòu)
 let items = []; 
 //隊(duì)列添加元素
 this.enqueue = function(element){ 
  items.push(element); 
 }; 
 //隊(duì)列移除元素
 this.dequeue = function(){ 
  return items.shift(); 
 };
 //查看隊(duì)列頭元素
 this.front = function(){ 
  return items[0]; 
 };
 //檢查隊(duì)列的長(zhǎng)度
 this.size = function(){ 
  return items.length; 
 };
 //打印隊(duì)列元素
 this.print = function(){ 
  console.log(items.toString()); 
 }; 
} 

循環(huán)隊(duì)列

循環(huán)隊(duì)列,修改版的隊(duì)列實(shí)現(xiàn)。為了解決假上溢問(wèn)題,引入循環(huán)隊(duì)列,即把向量空間想象為一個(gè)首尾相接的圓環(huán),在循環(huán)隊(duì)列中進(jìn)行出隊(duì)、入隊(duì)操作時(shí),頭尾指針仍要加1,朝前移動(dòng)。只不過(guò)當(dāng)頭尾指針指向向量上界(MAXNUM-1)時(shí),其加1操作的結(jié)果是指向向量的下界0。
在JavaScript中的數(shù)據(jù)結(jié)構(gòu)(隊(duì)列)


優(yōu)先隊(duì)列是什么?

優(yōu)先隊(duì)列,隊(duì)列修改版。元素的添加和移除是基于優(yōu)先級(jí)的?,F(xiàn)實(shí)的例子有就是機(jī)場(chǎng)登機(jī)的順序,頭等艙和商務(wù)艙乘客的優(yōu)先級(jí)要高于經(jīng)濟(jì)艙乘客;迪士尼入園vip先入園等等。
實(shí)現(xiàn)一個(gè)優(yōu)先隊(duì)列,有兩種選項(xiàng):設(shè)置優(yōu)先級(jí),然后在正確的位置添加元素;或者用入列操
作添加元素,然后按照優(yōu)先級(jí)移除它們。因此可以對(duì)它們使用默認(rèn)的出列操作:
在JavaScript中的數(shù)據(jù)結(jié)構(gòu)(隊(duì)列)


總結(jié)

在JavaScript中,隊(duì)列(Queue)是一種具有先進(jìn)先出(FIFO, First-In-First-Out)特性的數(shù)據(jù)結(jié)構(gòu),它可以用于在計(jì)算機(jī)程序中管理和存儲(chǔ)元素。隊(duì)列中,新元素被添加到隊(duì)列末尾,并等待其他已存在的元素被處理后才能被移除。當(dāng)刪除元素時(shí),總是從隊(duì)首開始移除元素。隊(duì)列主要有兩個(gè)基本操作: 入隊(duì)(enqueue)和出隊(duì)(dequeue),在JavaScript中可以使用數(shù)組(Array)或鏈表(Linked List)等數(shù)據(jù)結(jié)構(gòu)來(lái)實(shí)現(xiàn)隊(duì)列。除了入隊(duì)和出隊(duì)操作,隊(duì)列還可以提供其他方法,如peek()返回隊(duì)列頭部的值、isEmpty()判斷隊(duì)列是否為空等等,但其基本實(shí)現(xiàn)都是基于入隊(duì)和出隊(duì)這兩個(gè)基本操作。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-486328.html

到了這里,關(guān)于在JavaScript中的數(shù)據(jù)結(jié)構(gòu)(隊(duì)列)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • JavaScript中的數(shù)據(jù)結(jié)構(gòu)和算法

    JavaScript不僅是一門用于網(wǎng)頁(yè)交互的腳本語(yǔ)言,還可以用于編寫高效的數(shù)據(jù)結(jié)構(gòu)和算法。在本文中,我們將介紹JavaScript中可用的數(shù)據(jù)結(jié)構(gòu)和常見的算法,并說(shuō)明它們?cè)趯?shí)際應(yīng)用中的用途和性能。 數(shù)據(jù)結(jié)構(gòu) 數(shù)組 數(shù)組是JavaScript中最常見的數(shù)據(jù)結(jié)構(gòu)之一,可以用來(lái)存儲(chǔ)和訪問(wèn)一系

    2024年02月01日
    瀏覽(23)
  • 在JavaScript中的棧數(shù)據(jù)結(jié)構(gòu)(Stack )

    在JavaScript中的棧數(shù)據(jù)結(jié)構(gòu)(Stack )

    JavaScript 中可以通過(guò)數(shù)組實(shí)現(xiàn)棧數(shù)據(jù)結(jié)構(gòu)。棧是一種遵循后進(jìn)先出(LIFO)原則的數(shù)據(jù)結(jié)構(gòu),它只允許在棧頂進(jìn)行插入和刪除操作。 棧是一種遵從后進(jìn)先出(LIFO)原則的有序集合。新添加的或待刪除的元素都保存在棧的 同一端,稱作棧頂,另一端就叫棧底。在棧里,新元素都

    2024年02月10日
    瀏覽(19)
  • 數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)記錄——什么是堆(優(yōu)先隊(duì)列、堆的概念、最大堆最小堆、優(yōu)先隊(duì)列的完全二叉樹表示、堆的特性、堆的抽象數(shù)據(jù)類型描述)

    數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)記錄——什么是堆(優(yōu)先隊(duì)列、堆的概念、最大堆最小堆、優(yōu)先隊(duì)列的完全二叉樹表示、堆的特性、堆的抽象數(shù)據(jù)類型描述)

    目錄 優(yōu)先隊(duì)列 若采用數(shù)組或鏈表實(shí)現(xiàn)優(yōu)先隊(duì)列? 數(shù)組 鏈表 有序數(shù)組 有序鏈表 總結(jié) 若采用二叉搜索樹來(lái)實(shí)現(xiàn)優(yōu)先隊(duì)列 最大堆 堆的概念 優(yōu)先隊(duì)列的完全二叉樹表示 堆的兩個(gè)特性? 結(jié)構(gòu)性 有序性 【例】最大堆和最小堆 【例】不是堆 堆的抽象數(shù)據(jù)類型描述 優(yōu)先隊(duì)列 (Prio

    2024年02月02日
    瀏覽(20)
  • 【JavaScript數(shù)據(jù)結(jié)構(gòu)與算法】字符串類(反轉(zhuǎn)字符串中的單詞)

    【JavaScript數(shù)據(jù)結(jié)構(gòu)與算法】字符串類(反轉(zhuǎn)字符串中的單詞)

    個(gè)人簡(jiǎn)介 ?? 個(gè)人主頁(yè): 前端雜貨鋪 ???♂? 學(xué)習(xí)方向: 主攻前端方向,也會(huì)涉及到服務(wù)端(Node.js) ?? 個(gè)人狀態(tài): 在校大學(xué)生一枚,已拿多個(gè)前端 offer(秋招) ?? 未來(lái)打算: 為中國(guó)的工業(yè)軟件事業(yè)效力 n 年 ?? 推薦學(xué)習(xí):??前端面試寶典 ??Vue2 ??Vue3 ??Vue2/3項(xiàng)目

    2023年04月09日
    瀏覽(26)
  • 【數(shù)據(jù)結(jié)構(gòu)和算法】--隊(duì)列的特殊結(jié)構(gòu)-循環(huán)隊(duì)列

    【數(shù)據(jù)結(jié)構(gòu)和算法】--隊(duì)列的特殊結(jié)構(gòu)-循環(huán)隊(duì)列

    循環(huán)隊(duì)列是隊(duì)列的一種特殊結(jié)構(gòu),它的 長(zhǎng)度是固定的 k ,同樣是 先進(jìn)先出 ,理論結(jié)構(gòu)是 首尾相連的環(huán)形循環(huán)結(jié)構(gòu) 。其理論結(jié)構(gòu)大致如下: 具體結(jié)構(gòu)描述可以參考 LeetCode : 622. 設(shè)計(jì)循環(huán)隊(duì)列的題目要求,大致如下: 設(shè)計(jì)你的循環(huán)隊(duì)列實(shí)現(xiàn)。 循環(huán)隊(duì)列是一種 線性數(shù)據(jù)結(jié)構(gòu) ,

    2024年02月04日
    瀏覽(16)
  • 【數(shù)據(jù)結(jié)構(gòu)-隊(duì)列】隊(duì)列介紹

    【數(shù)據(jù)結(jié)構(gòu)-隊(duì)列】隊(duì)列介紹

    ??????歡迎來(lái)到我的博客,很高興能夠在這里和您見面!希望您在這里可以感受到一份輕松愉快的氛圍,不僅可以獲得有趣的內(nèi)容和知識(shí),也可以暢所欲言、分享您的想法和見解。 推薦:kuan 的首頁(yè),持續(xù)學(xué)習(xí),不斷總結(jié),共同進(jìn)步,活到老學(xué)到老 導(dǎo)航 檀越劍指大廠系列:全面總

    2024年02月09日
    瀏覽(16)
  • 【數(shù)據(jù)結(jié)構(gòu)-隊(duì)列】阻塞隊(duì)列

    【數(shù)據(jù)結(jié)構(gòu)-隊(duì)列】阻塞隊(duì)列

    ??????歡迎來(lái)到我的博客,很高興能夠在這里和您見面!希望您在這里可以感受到一份輕松愉快的氛圍,不僅可以獲得有趣的內(nèi)容和知識(shí),也可以暢所欲言、分享您的想法和見解。 推薦:kuan 的首頁(yè),持續(xù)學(xué)習(xí),不斷總結(jié),共同進(jìn)步,活到老學(xué)到老 導(dǎo)航 檀越劍指大廠系列:全面總

    2024年02月09日
    瀏覽(25)
  • 數(shù)據(jù)結(jié)構(gòu)01-線性結(jié)構(gòu)-鏈表?xiàng)j?duì)列-隊(duì)列篇

    數(shù)據(jù)結(jié)構(gòu)01-線性結(jié)構(gòu)-鏈表?xiàng)j?duì)列-隊(duì)列篇

    本系列為C++數(shù)據(jù)結(jié)構(gòu)系列,會(huì)介紹 線性結(jié)構(gòu),簡(jiǎn)單樹,特殊樹,簡(jiǎn)單圖等。本文為線性結(jié)構(gòu)部分。 線性結(jié)構(gòu) 【 3 】鏈表:?jiǎn)捂湵?、雙向鏈表、循環(huán)鏈表 【 3 】棧 【 3 】隊(duì)列 隊(duì)列(Queue)與棧一樣,是一種線性存儲(chǔ)結(jié)構(gòu),它具有如下特點(diǎn): (1)隊(duì)列中的數(shù)據(jù)元素遵循“先進(jìn)

    2024年02月16日
    瀏覽(24)
  • 數(shù)據(jù)結(jié)構(gòu)—循環(huán)隊(duì)列(環(huán)形隊(duì)列)

    數(shù)據(jù)結(jié)構(gòu)—循環(huán)隊(duì)列(環(huán)形隊(duì)列)

    循環(huán)隊(duì)列是一種線性數(shù)據(jù)結(jié)構(gòu),其操作表現(xiàn)基于 FIFO(先進(jìn)先出)原則并且 隊(duì)尾被連接在隊(duì)首之后以形成一個(gè)循環(huán) 。它也被稱為“ 環(huán)形緩沖器 ”。 循環(huán)隊(duì)列的一個(gè)好處是可以利用這個(gè)隊(duì)列之前用過(guò)的空間。在一個(gè)普通隊(duì)列里,一旦一個(gè)隊(duì)列滿了,我們就不能插入下一個(gè)元素

    2024年02月11日
    瀏覽(19)
  • 【數(shù)據(jù)結(jié)構(gòu)-隊(duì)列】雙端隊(duì)列

    【數(shù)據(jù)結(jié)構(gòu)-隊(duì)列】雙端隊(duì)列

    ??????歡迎來(lái)到我的博客,很高興能夠在這里和您見面!希望您在這里可以感受到一份輕松愉快的氛圍,不僅可以獲得有趣的內(nèi)容和知識(shí),也可以暢所欲言、分享您的想法和見解。 推薦:kuan 的首頁(yè),持續(xù)學(xué)習(xí),不斷總結(jié),共同進(jìn)步,活到老學(xué)到老 導(dǎo)航 檀越劍指大廠系列:全面總

    2024年02月09日
    瀏覽(27)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包