Cara menggunakan Antrian C++

pengantar

Antrian adalah kumpulan item, di mana item pertama yang ditambahkan ke dalam daftar, harus menjadi item pertama yang akan dihapus berikutnya. Jadi saat item ditambahkan ke koleksi, ukurannya bertambah, yaitu bertambah panjang. Setiap kali ada item yang akan dihapus, itu harus menjadi yang pertama ditambahkan. Jika item dihapus terus menerus, maka item berikutnya yang dihapus adalah item kedua; yang ketiga dihapus sesudahnya, dan seterusnya.

Setelah item pertama dari daftar asli dihapus, item kedua menjadi item pertama. Setelah item kedua dihapus, item ketiga menjadi item pertama, dan seterusnya.

Contoh antrean kehidupan nyata yang baik adalah ketika orang mengantre untuk menunggu service atau barang. Orang pertama dilayani terlebih dahulu sebelum yang terakhir. Namun, antrian yang dibicarakan dalam tutorial ini, adalah antrian perangkat lunak, seperti yang dirancang dalam C++.

FIFO

FIFO adalah singkatan dari First-In, First-Out. Ini adalah cara lain untuk menghargai antrian. Ini berarti, item pertama yang masuk ke dalam daftar, adalah item pertama yang dihapus, setiap kali penghapusan akan dilakukan. Awal dari daftar disebut kepala atau depan; akhir daftar disebut bagian belakang atau ekor.

Operasi Esensial

Antrian perangkat lunak harus memiliki setidaknya operasi berikut:

dorongan

Operasi ini, menambahkan elemen baru di belakang antrian. Operasi ini secara resmi disebut, enqueue.

menggeser

Operasi ini menghapus elemen pertama dari antrian, dan elemen kedua menjadi elemen pertama yang baru. Operasi ini secara resmi disebut dequeue. Itu disebut pop di C++.

Artikel ini menjelaskan cara menggunakan struktur data antrian C++. Anda harus mengetahui pointer dan referensi C++ untuk memahami sisa artikel ini.

Kelas dan Objek

Kelas adalah sekumpulan variabel dan fungsi yang bekerja sama, di mana variabel tidak memiliki nilai yang ditetapkan. Ketika nilai ditugaskan ke variabel, kelas menjadi objek. Nilai berbeda yang diberikan pada kelas yang sama menghasilkan objek yang berbeda; yaitu, objek yang berbeda adalah kelas yang sama dengan nilai yang berbeda. Membuat objek dari kelas dikatakan membuat objek.

Nama, antrian, adalah kelas. Objek yang dibuat dari kelas antrian memiliki nama yang dipilih programmer.

Fungsi yang termasuk dalam kelas diperlukan untuk membuat instance objek dari kelas. Dalam C++, fungsi tersebut memiliki nama yang sama dengan nama kelasnya. Objek yang dibuat (diinstantiated) dari kelas memiliki nama berbeda yang diberikan kepada mereka, oleh programmer.

Membuat objek dari kelas berarti membangun objek; itu juga berarti instantiating.

Program C++ yang menggunakan kelas antrian, dimulai dengan baris berikut di bagian atas file:

#include <iostream>
#include <squeue>
using namespace std;

Baris pertama adalah untuk input/output. Baris kedua adalah mengizinkan program untuk menggunakan semua fitur dari kelas antrian. Baris ketiga memungkinkan program untuk menggunakan nama dalam namespace standar.

Membebani Fungsi

Ketika dua atau lebih tanda tangan fungsi yang berbeda memiliki nama yang sama, nama tersebut dikatakan kelebihan beban. Ketika satu fungsi dipanggil, jumlah dan jenis argumen, tentukan fungsi mana yang benar-benar dieksekusi.

Konstruksi

queue<type> name()

Deklarasi berikut membuat sebuah antrian bernama, que dari tipe int.

queue<int> que;

Antriannya kosong. Deklarasi dimulai dengan kata yang dicadangkan, antrian diikuti dengan kurung sudut dengan tipe data. Kemudian Anda memiliki programmer yang diberi nama untuk antrian.

Membangun dengan Daftar Penginisialisasi

Definisi berikut menunjukkan cara membuat antrian dengan daftar penginisialisasi:

queue<float> que({1.1, 2.2, 3.3, 4.4});

Menghancurkan Antrian

Untuk menghancurkan antrian, biarkan saja keluar dari ruang lingkup.

Akses Elemen Antrian

dorong (nilai)

Antrian adalah daftar First-In-First-Out. Jadi, setiap nilai ditambahkan dari belakang. Segmen kode berikut membuat antrian kosong, setelah itu lima nilai float ditambahkan dari belakang:

queue<float> que;

    que.push(1.1);
    que.push(2.2);
    que.push(3.3);
    que.push(4.4);
    que.push(5.5);

ukuran() const

Ini mengembalikan jumlah elemen dalam antrian. Kode berikut menggambarkan:

queue<float> que;
    que.push(1.1); que.push(2.2); que.push(3.3); que.push(4.4); que.push(5.5);
    cout << que.size() << 'n';

Keluarannya adalah 5.

depan()

Ini mengembalikan referensi ke elemen pertama dari antrian, tanpa menghapus elemen. Output dari kode berikut adalah 1.1.

queue<float> que;
que.push(1.1); que.push(2.2); que.push(3.3); que.push(4.4); que.push(5.5);
cout << que.front() << 'n';

Elemen tidak dihapus dari antrian.

depan() konstan

Ketika konstruksi antrian didahului oleh const, ekspresi “front() const” akan dieksekusi sebagai ganti “front()”. Ini digunakan dalam kode berikut, misalnya.

const queue<float> que ({1.1, 2.2, 3.3, 4.4, 5.5});
cout << que.front() << 'n';

Referensi konstan dikembalikan. Elemen tidak dihilangkan dari vektor. Elemen antrian tidak dapat diubah.

kembali()

Ini mengembalikan referensi ke elemen terakhir dari antrian, tanpa menghapus elemen. Output dari kode berikut adalah 5.5.

queue<float> que;
que.push(1.1); que.push(2.2); que.push(3.3); que.push(4.4); que.push(5.5);
cout << que.back() << 'n';

kembali() const

Ketika konstruksi antrian didahului oleh const, ekspresi “back() const” akan dieksekusi sebagai ganti “back()”. Ini digunakan dalam kode berikut, misalnya.

const queue<float> que ({1.1, 2.2, 3.3, 4.4, 5.5});
cout << que.back() << 'n';

Referensi konstan dikembalikan. Elemen tidak dihapus dari antrian. Dengan const sebelumnya untuk konstruksi antrian, elemen dalam antrian tidak dapat diubah.

Kapasitas Antrian

ukuran() const

– Lihat di atas

kosong() konstanta

Ini mengembalikan 1 untuk true jika tidak ada elemen dalam antrian, atau 0 untuk false jika antrian kosong. Kode berikut menggambarkan hal ini:

queue<float> que1 ({1.1, 2.2, 3.3, 4.4, 5.5});
cout << que1.empty() << 'n';
queue<float> que2;
cout << que2.empty() << 'n';

Outputnya adalah:

0
1

Pengubah Antrian

pop()

Antrian adalah FIFO, jadi elemen apa pun yang harus dihilangkan harus dihilangkan dari bagian atas (kepala) antrian. Fungsi anggota ini menghapus elemen pertama tanpa mengembalikannya. Kode berikut menggambarkan hal ini:

queue<float> que ({1.1, 2.2, 3.3, 4.4, 5.5});
cout << que.front() << 'n';
que.pop();
cout << que.size() << 'n';

Outputnya adalah:

1.1
4

a.swap(b)

Dua antrian dapat ditukar, seperti yang diilustrasikan dalam segmen kode ini:

queue <float> que1({1.1, 2.2, 3.3, 4.4, 5.5});
queue <float> que2({10, 20});
que1.swap(que2);
cout << "First element and size of que1:
"<< que1.front() <<", "<< que1.size() << 'n';
cout << "First element and size of que2 "<<
que2.front() <<", "<< que2.size() << 'n';

Outputnya adalah:

Elemen pertama dan ukuran que1: 10, 2

Elem
en pertama dan ukuran que2: 1.1, 5

Perhatikan bahwa panjang antrian ditambah jika perlu. Juga, nilai yang tidak memiliki pengganti, diganti dengan beberapa nilai default. Tipe data harus dari tipe yang sama.

Operator Kesetaraan dan Relasional untuk Antrian

Untuk karakter biasa di C++, dalam urutan menaik, angka datang sebelum huruf besar, yang datang sebelum huruf kecil. Karakter spasi datang sebelum nol dan semuanya.

Operator Kesetaraan

Mengembalikan 1 untuk benar dan 0 untuk salah.

== Operator

Mengembalikan 1 jika dua antrian memiliki ukuran yang sama dan elemen yang bersesuaian adalah sama; jika tidak, ia mengembalikan 0. Contoh:

queue <const char*> que1({"kind", "something else"});
queue <const char*> que2({"wicked"});
int num = que1 == que2;
cout << num << 'n';

Keluarannya adalah: 0.

!= Operator

– kebalikan dari yang di atas. Contoh:

queue <const char*> que1({"kind", "something else"});
queue <const char*> que2({"wicked"});
int num = que1 != que2;
cout << num << 'n';

Keluarannya adalah: 1.

Operator Relasional

Mengembalikan 1 untuk benar dan 0 untuk salah.

<Operator

Mengembalikan 1 jika antrian pertama adalah subset awal dari antrian kedua, dengan elemen dari dua bagian yang sama menjadi sama dan dalam urutan yang sama. Jika kedua antrian memiliki ukuran yang sama atau ukuran yang berbeda, dan bergerak dari kiri ke kanan, sebuah elemen ditemui dalam antrian pertama yang kurang dari elemen yang sesuai dalam antrian kedua, maka 1 masih akan dikembalikan. Jika tidak, 0 dikembalikan. Contoh:

queue <const char*> que1({"kind", "something else"});
queue <const char*> que2({"wicked"});
int num = que1 < que2;
cout << num << 'n';

Outputnya adalah 1. < tidak termasuk case jika ukuran dan urutannya sama.

> Operator

– kebalikan dari yang di atas. Contoh:

queue <const char*> que1({"kind", "something else"});
queue <const char*> que2({"wicked"});
int num = que1 > que2;
cout << num << 'n';

Keluaran: 0

<= Operator

– sama dengan < tetapi termasuk casing jika ukuran dan urutannya sama. Contoh:

queue <const char*> que1({"kind", "something else"});
queue <const char*> que2({"wicked"});
int num = que1 <= que2;
cout << num << 'n';

Keluaran: 1

>= Operator

– kebalikan dari yang di atas. Contoh:

queue <const char*> que1({"kind", "something else"});
queue <const char*> que2({"wicked"});
int num = que1 >= que2;
cout << num << 'n';

Keluaran: 0

Kelas dan Objek Instansinya

Nilai adalah untuk tipe data, sebagai objek instantiated adalah untuk kelas. Konstruksi antrian juga dapat menerima kelas sebagai tipe data. Program berikut menggambarkan hal ini:

#include <iostream>
#include <queue>
using namespace std;
class TheCla
{
public:
int num;
static char ch;
void func (char cha, const char *str)
{
cout << "There are " << num << " books worth " << cha << str << " in the store." << 'n';
}
static void fun (char ch)
{
if (ch == 'a')
cout << "Official static member function" << 'n';
}
};
int main()
{
TheCla obj1; TheCla obj2; TheCla obj3; TheCla obj4; TheCla obj5;
queue <TheCla> que;
que.push(obj1); que.push(obj2); que.push(obj3); que.push(obj4); que.push(obj5);
cout << que.size() << 'n';
return 0;
}

Keluarannya adalah 5.

Daftar Tertaut

Daftar antrian secara teknis disebut daftar tertaut. Ada dua jenis daftar tertaut untuk antrian: daftar tertaut tunggal dan daftar tertaut ganda.

Elemen daftar tertaut tunggal dapat diimplementasikan oleh struct dari dua anggota. Satu anggota memegang pointer ke elemen berikutnya dan anggota lainnya memegang
datum (tunggal untuk data).

Elemen daftar tertaut ganda dapat diimplementasikan oleh struct yang terdiri dari tiga anggota. Anggota tengah memegang datum, sedangkan anggota pertama dan ketiga memegang pointer ke elemen yang berdekatan.

Aplikasi Antrian

Antrian adalah struktur data pertama masuk pertama keluar. Ada situasi dalam komputasi ketika data tiba dalam bentuk antrian, yang memerlukan perilaku first-in-first-out.

Berbagi Sumber Daya Komputer

Sumber daya di komputer adalah komponen fisik atau virtual dengan ketersediaan terbatas. Mereka termasuk CPU, kartu video, hard drive, dan memori. Berbagi sumber daya seperti itu membutuhkan antrian.

Menangani Interupsi

Periferal komputer perlu menginterupsi komputer dari waktu ke waktu. Interupsi harus ditangani dengan cara yang sama ketika mereka tiba. Ini membutuhkan antrian.

Kelola informasi.

Antrian dapat digunakan, misalnya, untuk mengelola file aplikasi untuk suatu pekerjaan, jika file tersebut disimpan di komputer.

Kesimpulan

Antrian adalah struktur data daftar, yang merupakan daftar tertaut tunggal atau daftar tertaut ganda. Sebagai aturan, elemen pertama yang masuk daftar adalah elemen pertama yang keluar. C++ menyediakan struktur data antrian di pustaka standarnya. Kategori fungsi anggota dan operator yang tersedia untuk struktur ini adalah konstruksi antrian, akses elemen antrian, kapasitas antrian, pengubah antrian, dan operator kelebihan beban antrian.

Setiap struktur data antrian harus menyediakan setidaknya, fungsi anggota push() dan pop(). push() artinya, mengirim elemen baru di belakang antrian; dan pop() artinya, menghapus elemen yang ada di depan antrian. Sayangnya, di C++, fungsi-fungsi ini tidak mengembalikan nilai yang didorong atau muncul. Jadi, untuk mengetahui elemen terakhir sebelum mendorong, fungsi ekstra back() harus digunakan; dan untuk mengetahui elemen pertama sebelum muncul, fungsi extra front() harus digunakan.

Nilai adalah untuk tipe data, sebagai objek instantiated adalah untuk kelas. Jadi, kelas tertentu dapat digunakan sebagai tipe data untuk instantiasi template antrian. Objek yang berbeda untuk kelas menjadi seperti nilai yang berbeda untuk kelas.

Antrian memiliki aplikasi di komputer. Ini dapat digunakan, misalnya, untuk mengelola file aplikasi untuk suatu pekerjaan, jika file tersebut disimpan di komputer.

Chrys

Related Posts