優先權佇列是一種佇列,其中根據指派給它們的優先權插入或刪除元素,其中優先權是範圍在0-10 之間的整數值,其中0 表示具有最高優先權的元素,10表示具有最高優先權的元素優先權最低的元素。實作優先權佇列遵循兩個規則:
有多種可用的資料結構可用於實作優先權佇列如堆疊、佇列和鍊錶。在本文中,我們將解釋隊列資料結構。有兩種方法可以用來實作優先權佇列,例如-
一種方法實作優先權佇列就是為每個優先權維護一個佇列。我們可以將這些多個佇列儲存在一個陣列中,其中每個佇列都有兩個指針,即 Front 和 Rear。在佇列中,Front指針用於向佇列中插入元素,每當插入元素時它就加1;另一個指針是rear指針,用於從佇列中刪除或移除元素,每當元素插入時它就減1被從隊列中刪除。最後,透過兩個指標的位置我們還可以確定佇列中元素的數量。
#注意- 如果每個佇列的大小相同,那麼我們可以建立一個二維數組,而不是建立多個一維數組維數組。
insert(queue, data, priority) If(queue->Rear[priority] = MAX-1 AND queue->Front[priority] = 0) OR (queue->Rear[priority] +1 =queue->Front[priority]) Print Overflow End IF queue->Rear[priority - 1] = MAX-1 Set queue->Rear[priority - 1] = 0 Else Set queue->Rear[priority] = queue->Rear[priority - 1] +1 End Set queue->CQueue[priority - 1] [queue->Rear[priority - 1] = data IF queue->Front[priority - 1] = -1 Set queue->Front[priority - 1] = 0 End
delete(queue) Set flag = 0, priority = 0 While priority <= MAX-1 IF NOT queue->Front[priority] = -1 Set flag = 1 Set value = queue->CQueue[priority][queue->Front[priority]] IF queue->Front[priority] = queue->Rear[priority] Set queue->Front[priority] = queue->Rear[priority] = -1 Else IF queue->Front[priority] = MAX-1 Set queue->Front[priority] = 0 Else Set queue->Front[priority] = queue->Front[priority] + 1 End End Break End Set priority = priority + End If flag = 0 Print underflow Else Return value End
以上是C/C++中的優先隊列介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!