優先順序佇列的封裝
優先順序佇列是佇列的一種,不過它不是逐次向佇列中新增元素,而是將元素的優先順序與佇列中元素的優先順序進行比較,然後插入乙個合適的位置。
優先順序佇列封裝**與佇列封裝**類似,只不過多出乙個比較的過程。
首先建立乙個名為priorityqueue的函式
接著封裝屬性,由於我們是基於陣列封裝的函式,所以函式內元素的屬性為陣列形式。
由於我們優先順序佇列傳入的引數內不再只含有乙個element元素,還多了乙個優先順序(priority)元素,所以為了方便操作。
我們在priorityqueue函式內再建立乙個函式,此函式相當於priorityqueue的內建類。
與佇列封裝唯一不同的就是插入操作:
在優先順序佇列的插入操作中,我們要比較元素優先順序的大小
首先判斷佇列內是否為空,若為空,則不用比較優先順序大小,直接將元素插入佇列
若不為空,我們用for迴圈遍歷佇列中的元素,一旦要插入元素的優先順序小於佇列內元素的優先順序,就用splice方法將元素插入到佇列內元素的位置上,此時因為元素已經插入,則不用再繼續執行for迴圈,我們用break方法跳出
若我們要插入的元素的優先順序比佇列中所有元素的優先順序都要大,我們則將元素插入到佇列的最末尾
所以建立乙個布林型變數,初始值為false,當要插入的元素已經插入時,讓此變數等於true
在for迴圈外面加乙個if判斷,如果此布林型變數的值為false,則說明元素未插入,此時將元素用push方法插入到佇列的最末尾。
注意,封裝函式內應該再加入乙個tostring方法,否則我們用alert方法測試函式時,彈窗內不是佇列內的元素,而是object
**如下:
function priorityqueue()
//封裝屬性
this.items =
//實現插入方法:
priorityqueue.prototype.enqueue = function (element, priority) else
}if (!added) }}
priorityqueue.prototype.tostring = function ()
return result}}
//測試方法
var pq = new priorityqueue()
pq.enqueue('abc', 22)
pq.enqueue('shj', 55)
alert(pq)
用堆封裝優先順序佇列
1 優先順序佇列 優先佇列是一種資料結構,能夠保證每次出隊的是佇列中優先順序最高的元素 可以自己定義比較器 使用堆的堆頂元素維護這個優先順序最高的元素,因為堆具有堆序性,堆頂元素要麼是最小的,要麼是最大的。2 具體 實現 中用到的堆 priorityqueue.h pragma once inclu...
js優先順序佇列結構的封裝
所謂優先順序,就比如飛機登艙,通常頭等艙的人會先登機,就是這個意思 封裝優先順序佇列 function priorityqueue 封裝屬性 this.items 實現插入方法 priorityqueue.prototype.enqueue function element,priority els...
佇列 優先順序佇列
優先順序佇列的隊尾是不需要改變的,永遠在低下標處。當佇列增加資料時,隊頭的位置就是資料項的大小減去1.public class priorityq 插入 public void insert long item else quearray j 1 item nitem 刪除 public long ...