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:
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 -
一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.
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.
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
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!