摘要:隊(duì)列數(shù)據(jù)結(jié)構(gòu)隊(duì)列遵循先進(jìn)先出,也稱先來(lái)先服務(wù)原則的一組有序的項(xiàng)。隊(duì)列在尾部添加新元素,并從頂部移除元素。最新添加的元素必須排在隊(duì)列的的末尾。
隊(duì)列和棧非常類似,但是使用了不同的原則,而非后進(jìn)先出,是先進(jìn)先出。
1.隊(duì)列數(shù)據(jù)結(jié)構(gòu)隊(duì)列遵循FIFO(先進(jìn)先出,也稱先來(lái)先服務(wù))原則的一組有序的項(xiàng)。隊(duì)列在尾部添加新元素,并從頂部移除元素。最新添加的元素必須排在隊(duì)列的的末尾。隊(duì)列示意圖如下:
2.創(chuàng)建隊(duì)列// 創(chuàng)建一個(gè)類表示隊(duì)列 function Queue() { // 使用數(shù)組作為存儲(chǔ)隊(duì)列的數(shù)據(jù)結(jié)構(gòu) let items = []; // 下面聲明隊(duì)列一些可用的方法 // 1.enqueue(elements) 向隊(duì)尾添加一個(gè)或多個(gè)項(xiàng) this.enqueue = function(element) { items.push(element); } // 2.dequeue() 從隊(duì)列移除元素 FIFO this.dequeue = function() { return item.shift(); } // 3.front() 查看隊(duì)列頭元素 this.front = function() { return items[0]; } // 4.isEmpty() size() 檢查隊(duì)列是否為空 this.isEmpty = function() { return items.length === 0; } this.size = function() { return items.length; } // 5.打印隊(duì)列元素 this.print = function() { console.log(items.toString()) } }
使用Queue類
let queue = new Queue(); console.log(queue.isEmpty()); // true // 添加元素 queue.enqueue("june"); queue.enqueue("jack"); queue.print(); // "june,jack" console.log(queue.size()); // 2 // 刪除元素 queue.dequeue(); queue.dequeue(); queue.print(); // ""3.優(yōu)先隊(duì)列
實(shí)現(xiàn)一個(gè)有限隊(duì)列,有兩種選擇:設(shè)置優(yōu)先級(jí),然后在正確的位置添加元素;或者用入列操作添加元素,然后按照他們的優(yōu)先級(jí)移除他們。
function PriorityQueue() { let items = []; // 設(shè)置添加元素的類 function QueueElement(element, priority) { this.element = element; this.priority = priority; } // 優(yōu)先級(jí)添加 this.enqueue = function(element, priority) { let queueElement = new QueueElement(element, priority); let added = false; // 遍原隊(duì)列中的元素,如果新添加元素的優(yōu)先級(jí)的值(優(yōu)先級(jí)大,priority值小)小于當(dāng)前遍歷原始的優(yōu)先級(jí)的值(即新添加元素優(yōu)先級(jí)大于當(dāng)前遍歷元素的優(yōu)先級(jí)),則在其前面添加新的元素 for(let i=0; i4.隊(duì)列的應(yīng)用——擊鼓傳花
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/101688.html
摘要:之?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ǔ)言的高級(jí)應(yīng)用都會(huì)用到數(shù)據(jù)結(jié)構(gòu)與算法以及設(shè)計(jì)模式。隊(duì)列在尾部添加新元素,并從頂部移除元素。最新添加的元素必須排在隊(duì)列的末尾。 前言 JavaScript是當(dāng)下最流行的編程語(yǔ)言之一,它可以做很多事情: 數(shù)據(jù)可視化(D3.js,Three.js,Chart.js); 移動(dòng)端應(yīng)用(React Native,Weex,AppCan,Flutter,Hybrid App,小程...
摘要:簡(jiǎn)介隊(duì)列遵循的是先進(jìn)先出的原則的一組有序的項(xiàng)。隊(duì)列從尾部添加新元素,并從頂部移除元素,最新添加的元素必須排列在隊(duì)列的末尾。它的想法來(lái)自于生活中排隊(duì)的策略。隊(duì)列不做任何變動(dòng)。 簡(jiǎn)介 隊(duì)列遵循的是FIFO(先進(jìn)先出)的原則的一組有序的項(xiàng)。 隊(duì)列從尾部添加新元素,并從頂部移除元素,最新添加的元素必須排列在隊(duì)列的末尾。 它的想法來(lái)自于生活中排隊(duì)的策略。顧客在付款結(jié)賬的時(shí)候,按照到來(lái)的先后順序排...
摘要:隊(duì)列遵循原則的一組有序的項(xiàng)向隊(duì)列尾部添加一個(gè)項(xiàng)移除隊(duì)列的第一項(xiàng)返回隊(duì)列中第一項(xiàng),對(duì)隊(duì)列本身不做修改判斷隊(duì)列是否為空返回隊(duì)列包含的元素個(gè)數(shù)優(yōu)先隊(duì)列根據(jù)優(yōu)先級(jí)添加項(xiàng)最小優(yōu)先隊(duì)列移除隊(duì)列的第一項(xiàng)返回隊(duì)列中第一項(xiàng),對(duì)隊(duì)列本身不做修改判斷隊(duì)列是否 隊(duì)列遵循FIFO(First In First Out)原則的一組有序的項(xiàng) let Queue = (function () { let it...
摘要:于是翻出了機(jī)房里的這本學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法開(kāi)始學(xué)習(xí)程序員的基礎(chǔ)知識(shí)。這本書用了我最熟悉的來(lái)實(shí)現(xiàn)各種數(shù)據(jù)結(jié)構(gòu)和算法,而且書很薄,可以說(shuō)是一本不錯(cuò)的入門教程。隊(duì)列在頭部刪除元素,尾部添加元素。 本系列所有文章:第一篇文章:學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法之棧與隊(duì)列第二篇文章:學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法之鏈表第三篇文章:學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法之集合第四篇文章:學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法之字典和散列表第五篇文章:學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算...
閱讀 1875·2023-04-25 19:51
閱讀 1178·2021-11-15 11:43
閱讀 4538·2021-11-02 14:40
閱讀 2005·2021-10-11 10:59
閱讀 1346·2021-09-22 15:05
閱讀 1035·2021-09-09 09:32
閱讀 655·2019-08-30 15:56
閱讀 556·2019-08-30 15:52