摘要:隊(duì)列實(shí)現(xiàn)使用數(shù)組來(lái)實(shí)現(xiàn)隊(duì)列看起來(lái)順理成章。中的數(shù)組具有其他編程語(yǔ)言中沒(méi)有的優(yōu)點(diǎn)數(shù)組的方法可以在數(shù)組末尾加入元素方法則可刪除數(shù)組的第一個(gè)元素。方法將它的參數(shù)插入數(shù)組中第一個(gè)開(kāi)放的位置該位置總在數(shù)組的末尾即使是個(gè)空數(shù)組也是如此。
隊(duì)列實(shí)現(xiàn)
使用數(shù)組來(lái)實(shí)現(xiàn)隊(duì)列看起來(lái)順理成章。JavaScript 中的數(shù)組具有其他編程語(yǔ)言中沒(méi)有的優(yōu)點(diǎn), 數(shù)組的 push() 方法可以在數(shù)組末尾加入元素,shift() 方法則可刪除數(shù)組的第一個(gè)元素。
push() 方法將它的參數(shù)插入數(shù)組中第一個(gè)開(kāi)放的位置,該位置總在數(shù)組的末尾,即使是個(gè) 空數(shù)組也是如此。請(qǐng)看下面的例子:
names = []; name.push("Cynthia"); names.push("Jennifer"); print(names); // 顯示 Cynthia,Jennifer
然后使用 shift() 方法刪除數(shù)組的第一個(gè)元素:
names.shift();
準(zhǔn)備開(kāi)始實(shí)現(xiàn) Queue 類,先從構(gòu)造函數(shù)開(kāi)始:
function Queue() { this.dataStore = []; this.enqueue = enqueue; this.dequeue = dequeue; this.front = front; this.back = back; this.toString = toString; this.empty = empty; }
enqueue() 方法向隊(duì)尾添加一個(gè)元素:
function enqueue(element) { this.dataStore.push(element); }
dequeue() 方法刪除隊(duì)首的元素:
function dequeue() { return this.dataStore.shift(); }
可以使用如下方法讀取隊(duì)首和隊(duì)尾的元素:
function front() { return this.dataStore[0]; } function back() { return this.dataStore[this.dataStore.length-1]; }
還需要 toString() 方法顯示隊(duì)列內(nèi)的所有元素:
function toString() { var retStr = ""; for (var i = 0; i < this.dataStore.length; ++i) { retStr += this.dataStore[i] + " "; return retStr; }
最后,需要一個(gè)方法判斷隊(duì)列是否為空:
function empty() { if (this.dataStore.length == 0) { return true; } else { return false; } }代碼歸納
function Queue() { this.dataStore = []; this.enqueue = enqueue; this.dequeue = dequeue; this.front = front; this.back = back; } this.toString = toString; this.empty = empty; } function enqueue(element) { this.dataStore.push(element); } function dequeue() { return this.dataStore.shift(); } function front() { return this.dataStore[0]; } function back() { return this.dataStore[this.dataStore.length - 1]; } function toString() { var retStr = ""; for (var i = 0; i < this.dataStore.length; ++i) { retStr += this.dataStore[i] + " "; } return retStr; } function empty() { if (this.dataStore.length == 0) { return true; } else { return false; } }后話
當(dāng)然,學(xué)好前端,你還需要關(guān)注一個(gè)公眾號(hào)!——每日前端
各位兄弟姐妹,共勉!
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/79198.html
摘要:散列表上面的地圖向我們展示了如何用廣度優(yōu)先搜索的思想找到北京到廣州的最短路線。在廣度優(yōu)先搜索中,我們需要用到隊(duì)列的這種思想來(lái)實(shí)現(xiàn)查找。建立了下面這個(gè)模型武漢廣州西藏上海上海武漢廣州代碼完整實(shí)現(xiàn),利用遞歸和廣度優(yōu)先搜索的思想實(shí)現(xiàn)。 什么是廣度優(yōu)先搜索? 如果只是是背概念,幼兒園的小朋友都能背下來(lái)念給你聽(tīng)。 假設(shè)看這篇文章的都和我一樣是個(gè)前端工程師,我們要從廣度優(yōu)先搜索(BFS)中學(xué)到什么...
摘要:之?dāng)?shù)組操作接下來(lái)就是數(shù)據(jù)結(jié)構(gòu)的第一部分,棧。以字符串顯示棧中所有內(nèi)容方法的實(shí)現(xiàn)說(shuō)明需要往棧中添加新元素,元素位置在隊(duì)列的末尾。的前端樂(lè)園原文鏈接寒假前端學(xué)習(xí)學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法,棧與隊(duì)列 本系列的第一篇文章: 學(xué)習(xí)JavaScript數(shù)據(jù)結(jié)構(gòu)與算法(一),棧與隊(duì)列第二篇文章:學(xué)習(xí)JavaScript數(shù)據(jù)結(jié)構(gòu)與算法(二):鏈表第三篇文章:學(xué)習(xí)JavaScript數(shù)據(jù)結(jié)構(gòu)與算法(三):集合第...
摘要:技巧使你的更加專業(yè)這是上關(guān)于技巧的一篇譯文,另外你也可以在本項(xiàng)目看到原文。列舉了一些很實(shí)用的技巧,比如給空內(nèi)容的標(biāo)簽添加內(nèi)容,逗號(hào)分隔列表等等。排序算法看源碼,把它背下來(lái)吧排序算法的封裝。主要幫助初學(xué)者更好的掌握排序算法的實(shí)現(xiàn)。 成為專業(yè)程序員路上用到的各種優(yōu)秀資料、神器及框架 成為一名專業(yè)程序員的道路上,需要堅(jiān)持練習(xí)、學(xué)習(xí)與積累,技術(shù)方面既要有一定的廣度,更要有自己的深度。 Java...
摘要:技巧使你的更加專業(yè)這是上關(guān)于技巧的一篇譯文,另外你也可以在本項(xiàng)目看到原文。列舉了一些很實(shí)用的技巧,比如給空內(nèi)容的標(biāo)簽添加內(nèi)容,逗號(hào)分隔列表等等。排序算法看源碼,把它背下來(lái)吧排序算法的封裝。主要幫助初學(xué)者更好的掌握排序算法的實(shí)現(xiàn)。 成為專業(yè)程序員路上用到的各種優(yōu)秀資料、神器及框架 成為一名專業(yè)程序員的道路上,需要堅(jiān)持練習(xí)、學(xué)習(xí)與積累,技術(shù)方面既要有一定的廣度,更要有自己的深度。 Java...
閱讀 1309·2021-11-04 16:09
閱讀 3509·2021-10-19 11:45
閱讀 2404·2021-10-11 10:59
閱讀 1019·2021-09-23 11:21
閱讀 2770·2021-09-22 10:54
閱讀 1146·2019-08-30 15:53
閱讀 2612·2019-08-30 15:53
閱讀 3484·2019-08-30 12:57