Pengenalan
Antrian adalah koleksi 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, i.e. ia bertambah panjang. Bila-bila masa ada item yang hendak dikeluarkan, item itu mesti yang pertama 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 untuk menunggu perkhidmatan atau kebaikan. Orang pertama dilayan terlebih dahulu sebelum terakhir. Namun, 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 masuk ke dalam 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 ruang nama 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, jumlah dan jenis argumen, tentukan fungsi mana yang sebenarnya dijalankan.
Pembinaan
beraturDeklarasi berikut menunjukkan giliran bernama, que jenis int.
beraturBarisan kosong. Deklarasi dimulakan dengan kata terpelihara, antrian 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:
beraturMenghancurkan Antrian
Untuk memusnahkan barisan, biarkan ia keluar dari 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:
beraturque.tolak (1.1);
que.tolak (2.2);
que.tolak (3.3);
que.tolak (4.4);
que.tolak (5.5);
saiz () konst
Ini mengembalikan bilangan elemen dalam barisan. Kod berikut menggambarkan:
beraturque.tolak (1.1); que.tolak (2.2); que.tolak (3.3); que.tolak (4.4); que.tolak (5.5);
cout << que.size() << '\n';
Keluarannya adalah 5.
depan ()
Ini mengembalikan rujukan ke elemen pertama dalam barisan, tanpa membuang elemen tersebut. Keluaran kod berikut adalah 1.1.
beraturque.tolak (1.1); que.tolak (2.2); que.tolak (3.3); que.tolak (4.4); que.tolak (5.5);
cout << que.front() << '\n';
Elemen tidak dikeluarkan dari barisan.
depan () konst
Apabila pembinaan antrian didahului oleh const, ungkapan "depan () const" dijalankan dan bukannya "depan ()". Contohnya digunakan dalam kod berikut.
beratur constcout << que.front() << '\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.
beraturque.tolak (1.1); que.tolak (2.2); que.tolak (3.3); que.tolak (4.4); que.tolak (5.5);
cout << que.back() << '\n';
belakang () konst
Apabila pembinaan antrian didahului oleh const, ungkapan "back () const" dijalankan bukan "back ()". Contohnya digunakan dalam kod berikut.
beratur constcout << que.back() << '\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 unsur dalam barisan, atau 0 untuk false jika barisan kosong. Kod berikut menggambarkan ini:
beraturcout << que1.empty() << '\n';
beratur
cout << que2.empty() << '\n';
Keluarannya adalah:
01
Pengubah Baris
pop ()
Antrian adalah FIFO, jadi elemen yang harus dikeluarkan mesti dikeluarkan dari bahagian atas (kepala) barisan. Fungsi anggota ini membuang elemen pertama tanpa mengembalikannya. Kod berikut menggambarkan ini:
beraturcout << que.front() << '\n';
que.pop ();
cout << que.size() << '\n';
Keluarannya adalah:
1.14
a.pertukaran (b)
Dua barisan boleh ditukar, seperti yang digambarkan dalam segmen kod ini:
beraturberatur
que1.pertukaran (que2);
cout << "First element and size of que1:
"<< que1.front() <<", "<< que1.size() << '\n';
cout << "First element and size of que2 "<<
que2.depan () <<", "<< que2.size() << '\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:
beraturberatur
int num = que1 == que2;
cout << num << '\n';
Keluarannya adalah: 0.
The != Pengendali
- bertentangan dengan perkara di atas. Contoh:
beraturberatur
int num = que1 != que2;
cout << num << '\n';
Keluarannya adalah: 1.
Pengendali Perhubungan
Mengembalikan 1 untuk true dan 0 untuk false.
The < Operator
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 dari elemen yang sesuai dalam barisan kedua, maka 1 masih akan dikembalikan. Jika tidak, 0 dikembalikan. Contoh:
beraturberatur
int num = que1 < que2;
cout << num << '\n';
Keluarannya adalah 1. < does not include the case when the size and order are the same.
Pengendali>
- bertentangan dengan perkara di atas. Contoh:
beraturberatur
int num = que1> que2;
cout << num << '\n';
Keluaran: 0
The <= Operator
- sama seperti < but includes the case when the size and order are the same. Example:
beraturberatur
int num = que1 <= que2;
cout << num << '\n';
Keluaran: 1
Pengendali> =
- bertentangan dengan perkara di atas. Contoh:
beraturberatur
int num = que1> = que2;
cout << num << '\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 ruang nama std;
kelas TheCla
awam:
int int;
char statik;
kekosongan kosong (char cha, const char * str)
cout << "There are " << num << " books worth " << cha << str << " in the store." << '\n';
keseronokan kekosongan statik (char ch)
jika (ch == 'a')
cout << "Official static member function" << '\n';
;
int utama ()
TheCla obj1; TheCla obj2; TheCla obj3; TheCla obj4; TheCla obj5;
beratur
que.tolak (obj1); que.tolak (obj2); que.tolak (obj3); que.tolak (obj4); que.tolak (obj5);
cout << que.size() << '\n';
pulangan 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).
Unsur 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, memerlukan perilaku pertama-dalam-pertama-keluar.
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 masuk ke dalam 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 antrian, dan operator giliran yang terlalu banyak.
Sebarang struktur data barisan mesti menyediakan sekurang-kurangnya, fungsi anggota push () dan pop (). tekan () 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 belakang () tambahan harus 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