Pengenalan kepada baris gilir keutamaan dalam C/C++

PHPz
Lepaskan: 2023-09-13 17:21:11
ke hadapan
1233 orang telah melayarinya

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
Salin selepas log masuk

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
Salin selepas log masuk

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!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan