首頁  >  文章  >  後端開發  >  C/C++中的優先隊列介紹

C/C++中的優先隊列介紹

PHPz
PHPz轉載
2023-09-13 17:21:111174瀏覽

優先權佇列是一種佇列,其中根據指派給它們的優先權插入或刪除元素,其中優先權是範圍在0-10 之間的整數值,其中0 表示具有最高優先權的元素,10表示具有最高優先權的元素優先權最低的元素。實作優先權佇列遵循兩個規則:

  • 具有最高優先權的資料或元素將在具有最低優先權的資料或元素之前執行。
  • 如果兩個元素具有相同的優先級,則它們將按照它們添加到清單中的順序執行。

有多種可用的資料結構可用於實作優先權佇列如堆疊、佇列和鍊錶。在本文中,我們將解釋隊列資料結構。有兩種方法可以用來實作優先權佇列,例如-

  • 在單一數組中維護多個優先權的佇列

    一種方法實作優先權佇列就是為每個優先權維護一個佇列。我們可以將這些多個佇列儲存在一個陣列中,其中每個佇列都有兩個指針,即 Front 和 Rear。在佇列中,Front指針用於向佇列中插入元素,每當插入元素時它就加1;另一個指針是rear指針,用於從佇列中刪除或移除元素,每當元素插入時它就減1被從隊列中刪除。最後,透過兩個指標的位置我們還可以確定佇列中元素的數量。

C/C++中的優先隊列介紹

#注意- 如果每個佇列的大小相同,那麼我們可以建立一個二維數組,而不是建立多個一維數組維數組。

優先權佇列插入操作演算法

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中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除