Cara menggunakan Antrian C ++

How Use C Queue



Pengenalan

Antrian adalah kumpulan item, di mana item pertama yang ditambahkan ke dalam senarai, mestilah item pertama yang akan dikeluarkan kemudian. Oleh kerana item ditambahkan ke koleksi, ukurannya bertambah besar, iaitu panjangnya bertambah. Bila-bila masa ada item yang hendak dikeluarkan, item yang pertama mesti ditambahkan. Sekiranya item dikeluarkan secara berterusan, maka item berikutnya dikeluarkan, adalah item kedua; yang ketiga dikeluarkan selepas itu, dan seterusnya.

Setelah item pertama dari senarai asal dikeluarkan, item kedua menjadi item pertama. Setelah item kedua dikeluarkan, yang ketiga menjadi item pertama, dan seterusnya.







Contoh antrean kehidupan nyata yang baik adalah ketika orang beratur menunggu perkhidmatan atau kebaikan. Orang pertama dilayan terlebih dahulu sebelum terakhir. Walau bagaimanapun, barisan yang dibincangkan dalam tutorial ini, adalah antrian perisian, seperti yang dirancang dalam C ++.



FIFO

FIFO bermaksud First-In, First-Out. Ini adalah cara lain untuk menghargai barisan. Ini bermaksud, item pertama yang memasuki senarai, adalah item pertama yang akan dikeluarkan, setiap kali penghapusan dilakukan. Permulaan senarai disebut kepala atau depan; akhir senarai disebut belakang atau ekor.



Operasi Penting

Baris perisian mesti mempunyai sekurang-kurangnya operasi berikut:





tolak

Operasi ini, menambah elemen baru di bahagian belakang barisan. Operasi ini secara rasmi dipanggil, enqueue.



pergeseran

Operasi ini membuang elemen pertama dalam barisan, dan elemen kedua menjadi elemen pertama yang baru. Operasi ini secara rasmi dipanggil dequeue. Ia dipanggil pop dalam C ++.

Artikel ini menerangkan cara menggunakan struktur data barisan C ++. Anda harus mengetahui petunjuk dan rujukan C ++ untuk memahami sisa artikel ini.

Kelas dan Objek

Kelas adalah sekumpulan pemboleh ubah dan fungsi yang berfungsi bersama, di mana pemboleh ubah tidak mempunyai nilai yang ditetapkan. Apabila nilai diberikan kepada pemboleh ubah, kelas menjadi objek. Nilai yang berbeza yang diberikan kepada kelas yang sama menghasilkan objek yang berbeza; iaitu, objek yang berbeza adalah kelas yang sama dengan nilai yang berbeza. Membuat objek dari kelas dikatakan sebagai objek.

Nama, beratur, adalah kelas. Objek yang dibuat dari kelas giliran mempunyai nama yang dipilih pengaturcara.

Fungsi yang tergolong dalam kelas diperlukan untuk membuat objek dari kelas. Dalam C ++, fungsi itu mempunyai nama yang sama dengan nama kelas. Objek yang dibuat (disusun) dari kelas mempunyai nama yang berbeza yang diberikan kepada mereka, oleh pengaturcara.

Membuat objek dari kelas bermaksud membina objek; ia juga bermaksud memberi contoh.

Program C ++ yang menggunakan kelas barisan, bermula dengan baris berikut di bahagian atas fail:

#sertakan
#sertakan
menggunakan namespace std;

Baris pertama adalah untuk input / output. Baris kedua adalah membenarkan program menggunakan semua ciri kelas beratur. Baris ketiga membolehkan program menggunakan nama di ruang nama standard.

Melebihi Fungsi

Apabila dua atau lebih tandatangan fungsi yang berbeza mempunyai nama yang sama, nama itu dikatakan berlebihan. Apabila satu fungsi dipanggil, bilangan dan jenis argumen, tentukan fungsi mana yang sebenarnya dijalankan.

Pembinaan

beratur<menaip>nama()

Deklarasi berikut menunjukkan sebuah barisan bernama, que dari jenis int.

beratur<int>itu;

Barisan kosong. Deklarasi dimulakan dengan kata terpelihara, barisan diikuti dengan tanda kurung sudut dengan jenis data. Kemudian anda mempunyai nama pengaturcara untuk barisan.

Pembinaan dengan Initializer List

Definisi berikut menunjukkan cara membuat barisan dengan senarai pemula:

beratur<terapung>itu({1.1, 2.2, 3.3, 4.4});

Menghancurkan Antrian

Untuk memusnahkan barisan, biarkan sahaja di luar ruang lingkup.

Akses Elemen Beratur

tolak (nilai)

Antrian adalah senarai First-In-First-Out. Jadi, setiap nilai ditambah dari belakang. Segmen kod berikut membuat barisan kosong, selepas itu lima nilai apungan ditambahkan dari belakang:

beratur<terapung>itu;

itu.tolak(1.1);
itu.tolak(2.2);
itu.tolak(3.3);
itu.tolak(4.4);
itu.tolak(5.5);

saiz () konst

Ini mengembalikan bilangan elemen dalam barisan. Kod berikut menggambarkan:

beratur<terapung>itu;
itu.tolak(1.1);itu.tolak(2.2);itu.tolak(3.3);itu.tolak(4.4);itu.tolak(5.5);
kos<<itu.ukuran() << ' n';

Keluarannya adalah 5.

depan ()

Ini mengembalikan rujukan ke elemen pertama dalam barisan, tanpa membuang elemen tersebut. Keluaran kod berikut adalah 1.1.

beratur<terapung>itu;
itu.tolak(1.1);itu.tolak(2.2);itu.tolak(3.3);itu.tolak(4.4);itu.tolak(5.5);
kos<<itu.depan() << ' n';

Elemen tidak dikeluarkan dari barisan.

depan () konst

Apabila pembinaan giliran didahului oleh const, ekspresi depan () const dijalankan dan bukannya depan (). Contohnya digunakan dalam kod berikut.

penyambungberatur<terapung>itu({1.1, 2.2, 3.3, 4.4, 5.5});
kos<<itu.depan() << ' n';

Rujukan tetap dikembalikan. Elemen tidak dikeluarkan dari vektor. Elemen giliran tidak boleh diubah.

belakang ()

Ini mengembalikan rujukan ke elemen terakhir dalam barisan, tanpa membuang elemen tersebut. Keluaran kod berikut adalah 5.5.

beratur<terapung>itu;
itu.tolak(1.1);itu.tolak(2.2);itu.tolak(3.3);itu.tolak(4.4);itu.tolak(5.5);
kos<<itu.belakang() << ' n';

belakang () konst

Apabila pembinaan giliran didahului oleh const, ungkapan kembali () const dijalankan dan bukannya belakang (). Contohnya digunakan dalam kod berikut.

penyambungberatur<terapung>itu({1.1, 2.2, 3.3, 4.4, 5.5});
kos<<itu.belakang() << ' n';

Rujukan tetap dikembalikan. Elemen tidak dikeluarkan dari barisan. Dengan konstanta sebelumnya untuk pembinaan antrian, elemen dalam barisan tidak dapat diubah.

Kapasiti Beratur

saiz () konst

- lihat di atas

kosong () konst

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

beratur<terapung>bahawa1({1.1, 2.2, 3.3, 4.4, 5.5});
kos<<bahawa1.kosong() << ' n';
beratur<terapung>itu2;
kos<<itu2.kosong() << ' n';

Keluarannya adalah:

0
1

Pengubah Baris

pop ()

Antrian adalah FIFO, jadi setiap elemen yang harus dikeluarkan mesti dikeluarkan dari bahagian atas (kepala) barisan. Fungsi anggota ini membuang elemen pertama tanpa mengembalikannya. Kod berikut menggambarkan ini:

beratur<terapung>itu({1.1, 2.2, 3.3, 4.4, 5.5});
kos<<itu.depan() << ' n';
itu.pop();
kos<<itu.ukuran() << ' n';

Keluarannya adalah:

1.1
4

a. pertukaran (b)

Dua barisan boleh ditukar, seperti yang digambarkan dalam segmen kod ini:

beratur<terapung>bahawa1({1.1, 2.2, 3.3, 4.4, 5.5});
beratur<terapung>itu2({10, dua puluh});
bahawa1.pertukaran(itu2);
kos<< 'Elemen pertama dan ukuran que1:
'
<<bahawa1.depan() <<','<<bahawa1.ukuran() << ' n';
kos<< 'Elemen pertama dan ukuran que2'<<
itu2.depan() <<','<<itu2.ukuran() << ' n';

Keluarannya adalah:

Elemen dan ukuran pertama que1: 10, 2

Elemen dan ukuran pertama que2: 1.1, 5

Perhatikan bahawa panjang barisan dinaikkan jika perlu. Juga, nilai yang tidak mempunyai penggantian, digantikan oleh beberapa nilai lalai. Jenis data mestilah jenis yang sama.

Pengendali Kesamaan dan Relasi untuk Antrian

Untuk watak biasa dalam huruf C ++, dalam urutan menaik, angka muncul sebelum huruf besar, yang muncul sebelum huruf kecil. Watak ruang hadir sebelum sifar dan semuanya.

Pengendali Kesamarataan

Mengembalikan 1 untuk true dan 0 untuk false.

Pengendali ==

Mengembalikan 1 jika kedua-dua barisan mempunyai ukuran yang sama dan elemen yang sesuai sama; jika tidak ia mengembalikan 0. Contoh:

beratur<penyambung char*>bahawa1({'baik', 'sesuatu yang lain'});
beratur<penyambung char*>itu2({'jahat'});
intpada satu=bahawa1==itu2;
kos<<pada satu<< ' n';

Keluarannya adalah: 0.

Pengendali! =

- bertentangan dengan perkara di atas. Contoh:

beratur<penyambung char*>bahawa1({'baik', 'sesuatu yang lain'});
beratur<penyambung char*>itu2({'jahat'});
intpada satu=bahawa1! =itu2;
kos<<pada satu<< ' n';

Keluarannya adalah: 1.

Pengendali Perhubungan

Mengembalikan 1 untuk true dan 0 untuk false.

The

Mengembalikan 1 jika barisan pertama adalah subset awal dari barisan kedua, dengan unsur-unsur dari dua bahagian yang sama sama dan dalam urutan yang sama. Sekiranya kedua-dua barisan berukuran sama atau berbeza, dan bergerak dari kiri ke kanan, elemen ditemui dalam barisan pertama yang kurang daripada elemen yang sesuai dalam barisan kedua, maka 1 masih akan dikembalikan. Jika tidak, 0 dikembalikan. Contoh:

beratur<penyambung char*>bahawa1({'baik', 'sesuatu yang lain'});
beratur<penyambung char*>itu2({'jahat'});
intpada satu=bahawa1<itu2;
kos<<pada satu<< ' n';

Keluarannya adalah 1.

Pengendali>

- bertentangan dengan perkara di atas. Contoh:

beratur<penyambung char*>bahawa1({'baik', 'sesuatu yang lain'});
beratur<penyambung char*>itu2({'jahat'});
intpada satu=bahawa1>itu2;
kos<<pada satu<< ' n';

Keluaran: 0

The<= Operator

- sama seperti beratur<penyambung char*>bahawa1({'baik', 'sesuatu yang lain'});
beratur<penyambung char*>itu2({'jahat'});
intpada satu=bahawa1<=itu2;
kos<<pada satu<< ' n';

Keluaran: 1

Pengendali> =

- bertentangan dengan perkara di atas. Contoh:

beratur<penyambung char*>bahawa1({'baik', 'sesuatu yang lain'});
beratur<penyambung char*>itu2({'jahat'});
intpada satu=bahawa1> =itu2;
kos<<pada satu<< ' n';

Keluaran: 0

Kelas dan Objek Instantinya

Nilai adalah untuk jenis data, seperti objek instantiated ke kelas. Pembinaan barisan juga dapat menerima kelas sebagai jenis data. Program berikut menggambarkan ini:

#sertakan
#sertakan
menggunakan namespace std;
kelas TheCla
{
awam:
intpada satu;
statik charch;
batalfungsi(chartidak, penyambung char *hlm)
{
kos<< 'Disana ada ' <<pada satu<< 'buku bernilai' <<tidak<<hlm<< 'di kedai.' << ' n';
}
statik batalseronok(charch)
{
sekiranya (ch== 'ke')
kos<< 'Fungsi anggota statik rasmi' << ' n';
}
};
intutama()
{
TheCla obj1;TheCla obj2;TheCla obj3;TheCla obj4;TheCla obj5;
beratur<TheCla>itu;
itu.tolak(obj1);itu.tolak(obj2);itu.tolak(obj3);itu.tolak(obj4);itu.tolak(obj5);
kos<<itu.ukuran() << ' n';
kembali 0;
}

Keluarannya adalah 5.

Senarai Terpaut

Senarai barisan secara teknikal disebut senarai terpaut. Terdapat dua jenis senarai terpaut untuk barisan: senarai berangkai tunggal dan senarai berganda.

Elemen senarai yang dipautkan secara tunggal dapat dilaksanakan oleh struktur dua anggota. Seorang ahli memegang penunjuk ke elemen seterusnya dan ahli yang lain memegang datum (tunggal untuk data).

Elemen senarai berganda boleh dilaksanakan oleh struktur tiga anggota. Anggota tengah memegang datum, sementara anggota pertama dan ketiga memegang petunjuk ke elemen berdekatan mereka.

Aplikasi Antrian

Antrian adalah struktur data pertama-dalam-pertama-keluar. Terdapat situasi dalam pengkomputeran ketika data tiba dalam bentuk giliran, yang memerlukan perilaku first-in-first-out.

Berkongsi Sumber Komputer

Sumber dalam komputer adalah komponen fizikal atau maya dengan ketersediaan terhad. Mereka termasuk CPU, kad video, cakera keras, dan memori. Berkongsi sumber seperti itu memerlukan barisan.

Mengendalikan Gangguan

Perisian komputer perlu mengganggu komputer dari semasa ke semasa. Gangguan harus ditangani dengan cara yang sama ketika mereka tiba. Ini memerlukan barisan.

Urus maklumat.

Antrian boleh digunakan, misalnya, untuk mengelola file aplikasi untuk pekerjaan, jika file tersebut disimpan di dalam komputer.

Kesimpulannya

Antrian adalah struktur data senarai, yang merupakan senarai berangkai tunggal atau senarai berganda. Sebagai peraturan, elemen pertama yang memasuki senarai adalah elemen pertama yang keluar. C ++ menyediakan struktur data beratur di perpustakaan standardnya. Kategori fungsi anggota dan pengendali yang tersedia untuk struktur ini adalah pembinaan giliran, akses elemen giliran, kapasiti barisan, pengubah giliran, dan operator giliran yang terlalu banyak.

Sebarang struktur data barisan mesti menyediakan sekurang-kurangnya, fungsi anggota push () dan pop (). tolak () bermaksud, menghantar elemen baru di bahagian belakang barisan; dan pop () bermaksud, membuang elemen yang berada di bahagian hadapan barisan. Malangnya, dalam C ++, fungsi ini tidak mengembalikan nilai yang didorong atau muncul. Oleh itu, untuk mengetahui elemen terakhir sebelum menolak, fungsi tambahan () belakang mesti digunakan; dan untuk mengetahui elemen pertama sebelum muncul, fungsi depan tambahan () harus digunakan.

Nilai adalah untuk jenis data, seperti objek instantiated ke kelas. Jadi, kelas tertentu boleh digunakan sebagai jenis data untuk contoh templat antrian. Objek yang berbeza untuk kelas menjadi seperti nilai yang berbeza untuk kelas.

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

Chrys