Menu
CoddyTech

Antrean Prioritas

Pelajaran 12 dari 23 dalam kursus C++ - Standard Template Library di Coddy.

Di C++, kita juga memiliki struktur data yang disebut antrean prioritas. Antrean prioritas memberi kita fungsi khusus yang tidak dimiliki antrean biasa, yaitu setiap elemen dikaitkan dengan nilai prioritas dan elemen dilayani berdasarkan prioritasnya.

Dalam antrean prioritas, elemen dengan prioritas tertinggi dihapus terlebih dahulu.

Antrean prioritas dasar dirancang agar elemen pertama dalam antrean merupakan elemen terbesar, sedangkan elemen lainnya diurutkan dari besar ke kecil.

priority_queue<dataType> queueName

Pertama, kita perlu menyertakan file header antrean prioritas di bagian atas file C++ kita. 

Kita membuat antrean prioritas seperti container lain yang telah dipelajari.

priority_queue<int> integers;

Selanjutnya, kita menggunakan method push() untuk menambahkan elemen baru ke antrean. Elemen akan ditambahkan, dan jika nilainya lebih besar daripada semua elemen lainnya, elemen tersebut akan disimpan di posisi pertama. Jika nilainya lebih kecil daripada semua elemen lainnya, elemen tersebut akan disimpan di posisi terakhir, dan seterusnya.

integers.push(5);  // integers = {5)

Untuk menampilkan elemen, kita menggunakan method top() seperti pada stack. Method ini menampilkan elemen dengan prioritas tertinggi. Untuk bilangan bulat, elemen yang ditampilkan adalah bilangan terbesar.

integers.push(100);  // integers = {100, 5}
integers.push(10);  // integers = {100, 10, 5}
integers.push(3);  // integers = {100, 10, 5, 3}
cout << integers.top();
Output:
100

Kita juga menghapus elemen seperti pada stack, dengan method pop(). Method ini menghapus elemen paling atas, yaitu elemen dengan prioritas tertinggi. Untuk bilangan, elemen yang dihapus adalah bilangan terbesar.

integers.pop();  // integers = {10, 5, 3}
cout << integers.top();
Output:
10

Kita dapat mengubah prioritas antrean yang digunakan untuk mengurutkan elemen. Misalnya, kita dapat mendeklarasikan antrean prioritas yang mengurutkan bilangan bulat dari kecil ke besar seperti di bawah ini:

priority_queue<int, vector<int>, greater<int> > integers;

Dalam antrean ini, elemen diurutkan dari kecil ke besar saat dimasukkan. Saat kita ingin menampilkan elemen teratas atau menghapusnya menggunakan method pop(), bilangan terkecil akan ditampilkan atau dihapus.

Untuk saat ini, kamu tidak perlu memikirkan cara menggunakan antrean prioritas yang berbeda atau mengubah prioritasnya. Ingat saja bahwa struktur data ini tersedia untuk kita gunakan agar kita dapat mengurutkan elemen berdasarkan jenis prioritas tertentu.


Method Antrean Prioritas

MethodFungsi
size()Mengembalikan jumlah elemen dalam antrean
empty()Mengembalikan true jika antrean kosong, dan false jika tidak
swap()Menukar isi satu antrean dengan antrean lainnya
challenge icon

Tantangan

Mudah

Kamu diberi sebuah bilangan N dari input. Pada N baris berikutnya, kamu akan diberi satu bilangan. Gunakan priority queue. Keluarkan bilangan yang dimasukkan dari yang terbesar hingga terkecil (urutan menurun).

 

Input
5
10
50
20
40
30
Output
50 40 30 20 10

Coba sendiri

#include <queue>
#include <iostream

using namespace std;

int main()
{
    // Enter your code here

    return 0;
}

Semua pelajaran di C++ - Standard Template Library

Latihan sendiri: Compiler C++ online