Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pengenalan kepada baris gilir keutamaan dalam C/C++

Pengenalan kepada baris gilir keutamaan dalam C/C++

PHPz
PHPzke hadapan
2023-09-13 17:21:111175semak imbas

Baris gilir keutamaan ialah baris gilir di mana elemen dimasukkan atau dialih keluar berdasarkan keutamaan yang diberikan kepada mereka, dengan keutamaan ialah nilai integer dalam julat 0-10, di mana 0 mewakili elemen dengan keutamaan tertinggi, 10 bermakna elemen yang mempunyai keutamaan tertinggi mempunyai keutamaan yang paling rendah. Melaksanakan baris gilir keutamaan mengikut dua peraturan:

  • Data atau elemen dengan keutamaan tertinggi akan dilaksanakan sebelum data atau elemen dengan keutamaan terendah.
  • Jika dua elemen mempunyai keutamaan yang sama, ia akan dilaksanakan mengikut susunan ia ditambahkan pada senarai.

Terdapat pelbagai struktur data tersedia yang boleh digunakan untuk melaksanakan baris gilir keutamaan seperti tindanan, baris gilir dan senarai terpaut. Dalam artikel ini, kami akan menerangkan struktur data baris gilir. Terdapat dua kaedah yang boleh digunakan untuk melaksanakan baris gilir keutamaan, contohnya -

  • Kekalkan berbilang barisan keutamaan dalam satu tatasusunan

    一The cara pertama untuk melaksanakan barisan keutamaan adalah dengan mengekalkan baris gilir untuk setiap tahap keutamaan. Kita boleh menyimpan berbilang baris gilir ini dalam tatasusunan di mana setiap baris gilir mempunyai dua penunjuk, Depan dan Belakang. Dalam baris gilir, penuding Hadapan digunakan untuk memasukkan elemen ke dalam baris gilir, dan ia ditambah dengan 1 setiap kali elemen disisipkan ialah penuding belakang, digunakan untuk memadam atau mengalih keluar elemen daripada baris gilir, dan ia adalah dikurangkan setiap kali elemen dimasukkan 1 dikeluarkan daripada baris gilir. Akhirnya, daripada kedudukan dua penunjuk kita juga boleh menentukan bilangan elemen dalam baris gilir.

Pengenalan kepada baris gilir keutamaan dalam C/C++

Nota - Jika saiz setiap giliran adalah sama, maka saiz setiap barisan adalah sama boleh mencipta tatasusunan dua dimensi dan bukannya mencipta tatasusunan satu dimensi berbilang.

Algoritma operasi sisipan barisan keutamaan

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

Algoritma operasi sisipan dalam baris gilir keutamaan

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

Atas ialah kandungan terperinci Pengenalan kepada baris gilir keutamaan dalam C/C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam