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