Uvod
Čakalna vrsta je zbirka elementov, pri čemer mora biti prvi element, dodan na seznam, prvi element, ki ga je treba odstraniti naslednji. Ko se zbirki dodajajo predmeti, se ta povečuje, tj.e. raste v dolžino. Kadar koli želite odstraniti kateri koli element, ga je treba dodati prvega. Če se predmeti odstranjujejo neprekinjeno, je naslednji odstranjeni drugi element; tretji se nato odstrani itd.
Po odstranitvi prvega elementa prvotnega seznama drugi postane prvi element. Po odstranitvi drugega elementa tretji postane prvi element itd.
Dober primer čakalne vrste iz resničnega življenja je, ko se ljudje postavijo v vrsto, da čakajo na storitev ali dobro. Prva oseba prejme prvo pred zadnjo. Vendar je vrsta, o kateri je govora v tej vadnici, vrsta programske opreme, kot je zasnovana v C++.
FIFO
FIFO pomeni First-In, First-Out. To je še en način ocenjevanja čakalne vrste. To pomeni, da je prvi element na seznamu prvi element, ki ga je treba odstraniti, kadar koli naj bi se odstranil. Začetek seznama se imenuje glava ali spredaj; konec seznama se imenuje hrbet ali rep.
Bistvene operacije
Čakalna vrsta programske opreme mora imeti vsaj naslednje postopke:
potisnite
Ta operacija doda nov element na zadnji strani čakalne vrste. Ta operacija se uradno imenuje čakalna vrsta.
premik
Ta operacija odstrani prvi element čakalne vrste, drugi element pa postane novi prvi element. Ta operacija se uradno imenuje odprava. V C se imenuje pop++.
V tem članku je razloženo, kako uporabljati strukturo podatkov čakalne vrste C ++. Morali bi poznati kazalnike in sklice na C ++, da bi razumeli preostanek tega članka.
Razred in predmeti
Razred je nabor spremenljivk in funkcij, ki delujejo skupaj, pri čemer spremenljivkam niso dodeljene vrednosti. Ko so spremenljivkam dodeljene vrednosti, razred postane objekt. Različne vrednosti, dane istemu razredu, povzročajo različne predmete; to pomeni, da so različni predmeti isti razred z različnimi vrednostmi. Ustvarjanje predmeta iz razreda naj bi ustvarilo primerek predmeta.
Ime, vrsta, je razred. Predmet, ustvarjen iz razreda čakalne vrste, ima izbrano ime programerja.
Funkcija, ki pripada razredu, je potrebna za primerek predmeta iz razreda. V C ++ ima ta funkcija enako ime kot ime razreda. Predmeti, ustvarjeni (primerki) iz razreda, imajo različna imena, ki jih jim da programer.
Ustvarjanje predmeta iz razreda pomeni konstruiranje predmeta; pomeni tudi instanciranje.
Program C ++, ki uporablja razred čakalne vrste, se začne z naslednjimi vrsticami na vrhu datoteke:
#include#include
uporaba imenskega prostora std;
Prva vrstica je namenjena vhodu / izhodu. Druga vrstica je omogočiti programu uporabo vseh funkcij razreda čakalne vrste. Tretja vrstica programu omogoča uporabo imen v standardnem imenskem prostoru.
Preobremenitev funkcije
Če imata dva ali več različnih podpisov funkcij isto ime, naj bi bilo to ime preobremenjeno. Ko pokličete eno funkcijo, število in vrsta argumentov določite, katera funkcija se dejansko izvaja.
Gradnja
čakalna vrstaNaslednja deklaracija ustvari vrsto z imenom, que tipa int.
čakalna vrstaČakalna vrsta je prazna. Izjava se začne z rezervirano besedo, čakalni vrsti, ki ji sledijo kotni oklepaji s podatkovnim tipom. Potem imate programerju določeno ime za čakalno vrsto.
Konstruiranje s seznamom inicializatorja
Naslednja definicija prikazuje, kako ustvariti čakalno vrsto s seznamom inicializatorja:
čakalna vrstaUničevanje čakalne vrste
Če želite uničiti čakalno vrsto, jo preprosto izpustite.
Dostop do elementa čakalne vrste
potisni (vrednost)
Čakalna vrsta je seznam Prvi v prvem. Torej, vsaka vrednost se doda od zadaj. Naslednji kodni segment ustvari prazno čakalno vrsto, po kateri se od zadaj doda pet plavajočih vrednosti:
čakalna vrstaque.potisnite (1.1);
que.potisnite (2.2);
que.potisnite (3.3);
que.potisnite (4.4);
que.potisnite (5.5);
velikost () const
To vrne število elementov v čakalni vrsti. Naslednja koda prikazuje:
čakalna vrstaque.potisnite (1.1); que.potisnite (2.2); que.potisnite (3.3); que.potisnite (4.4); que.potisnite (5.5);
cout << que.size() << '\n';
Izhod je 5.
spredaj ()
To vrne sklic na prvi element čakalne vrste, ne da bi ga odstranili. Rezultat naslednje kode je 1.1.
čakalna vrstaque.potisnite (1.1); que.potisnite (2.2); que.potisnite (3.3); que.potisnite (4.4); que.potisnite (5.5);
cout << que.front() << '\n';
Element ni odstranjen iz čakalne vrste.
spredaj () const
Ko je pred čakalno vrsto pred const, se namesto „front ()“ izvede izraz “front () const”. Uporablja se na primer v naslednji kodi.
const čakalna vrstacout << que.front() << '\n';
Vrne se stalna referenca. Element ni odstranjen iz vektorja. Elementov čakalne vrste ni mogoče spremeniti.
nazaj ()
To vrne sklic na zadnji element čakalne vrste, ne da bi ga odstranili. Rezultat naslednje kode je 5.5.
čakalna vrstaque.potisnite (1.1); que.potisnite (2.2); que.potisnite (3.3); que.potisnite (4.4); que.potisnite (5.5);
cout << que.back() << '\n';
back () const
Ko je pred čakalno vrsto pred const, se namesto „back ()“ izvede izraz “back () const”. Uporablja se na primer v naslednji kodi.
const čakalna vrstacout << que.back() << '\n';
Vrne se stalna referenca. Element ni odstranjen iz čakalne vrste. S predhodno const za konstrukcijo čakalne vrste elementov v čakalni vrsti ni mogoče spremeniti.
Kapaciteta čakalne vrste
velikost () const
- glej zgoraj
prazno () const
To vrne 1 za true, če v čakalni vrsti ni elementov, ali 0 za false, če je vrsta prazna. Naslednja koda to ponazarja:
čakalna vrstacout << que1.empty() << '\n';
čakalna vrsta
cout << que2.empty() << '\n';
Rezultat je:
01
Modifikatorji čakalne vrste
pop ()
Čakalna vrsta je FIFO, zato je treba vse elemente, ki jih je treba odstraniti, odstraniti z vrha (glave) čakalne vrste. Ta funkcija člana odstrani prvi element, ne da bi ga vrnila. Naslednja koda to ponazarja:
čakalna vrstacout << que.front() << '\n';
que.pop ();
cout << que.size() << '\n';
Rezultat je:
1.14
a.zamenjava (b)
Kot je prikazano v tem segmentu kode, je mogoče zamenjati dve vrsti:
čakalna vrstačakalna vrsta
que1.zamenjava (que2);
cout << "First element and size of que1:
"<< que1.front() <<", "<< que1.size() << '\n';
cout << "First element and size of que2 "<<
que2.spredaj () <<", "<< que2.size() << '\n';
Rezultat je:
Prvi element in velikost que1: 10, 2
Prvi element in velikost que2: 1.1, 5
Upoštevajte, da se dolžina čakalne vrste po potrebi poveča. Vrednosti, ki niso imele zamenjav, se nadomestijo s privzetimi vrednostmi. Tipi podatkov morajo biti iste vrste.
Operaterji enakosti in relacije za čakalne vrste
Za navadne znake v jeziku C ++ so v naraščajočem vrstnem redu številke pred velikimi črkami, ki so pred malimi črkami. Vesoljski znak je pred ničlo in pred vsemi.
Izvajalci enakosti
Vrne 1 za true in 0 za false.
Operater ==
Vrne 1, če imata obe vrsti enake velikosti in sta ustrezna elementa enaka; v nasprotnem primeru vrne 0. Primer:
čakalna vrstačakalna vrsta
int num = que1 == que2;
cout << num << '\n';
Izhod je: 0.
The != Operater
- nasprotno zgoraj. Primer:
čakalna vrstačakalna vrsta
int num = que1 != que2;
cout << num << '\n';
Rezultat je: 1.
Relacijski operaterji
Vrne 1 za true in 0 za false.
The < Operator
Vrne 1, če je prva vrsta začetna podmnožica druge čakalne vrste, pri čemer so elementi obeh enakih delov enaki in v istem vrstnem redu. Če sta obe čakalni vrsti enake velikosti ali različni velikosti in se premikata od leve proti desni, v prvi čakalni vrsti naletimo na element, ki je manjši od ustreznega elementa v drugi čakalni vrsti, bo 1 še vedno vrnjen. V nasprotnem primeru se vrne 0. Primer:
čakalna vrstačakalna vrsta
int num = que1 < que2;
cout << num << '\n';
Izhod je 1. < does not include the case when the size and order are the same.
> Operater
- nasprotno zgoraj. Primer:
čakalna vrstačakalna vrsta
int num = que1> que2;
cout << num << '\n';
Izhod: 0
The <= Operator
- enako kot < but includes the case when the size and order are the same. Example:
čakalna vrstačakalna vrsta
int num = que1 <= que2;
cout << num << '\n';
Izhod: 1
Operater> =
- nasprotno zgoraj. Primer:
čakalna vrstačakalna vrsta
int num = que1> = que2;
cout << num << '\n';
Izhod: 0
Razred in njegovi hitri predmeti
Vrednost je za podatkovni tip, kot instancirani objekt za razred. Konstrukcija čakalne vrste lahko sprejme tudi razred kot podatkovni tip. Naslednji program to ponazarja:
#include#include
uporaba imenskega prostora std;
razred TheCla
javno:
int številka;
statični znak;
void func (char cha, const char * str)
cout << "There are " << num << " books worth " << cha << str << " in the store." << '\n';
statična praznina (char ch)
če (ch == 'a')
cout << "Official static member function" << '\n';
;
int main ()
TheCla obj1; TheCla obj2; TheCla obj3; TheCla obj4; TheCla obj5;
čakalna vrsta
que.potisnite (obj1); que.potisni (obj2); que.potisni (obj3); que.potisk (obj4); que.potisk (obj5);
cout << que.size() << '\n';
vrnitev 0;
Izhod je 5.
Povezani seznam
Seznam čakalnih vrst se tehnično imenuje povezani seznam. Za čakalno vrsto obstajata dve vrsti povezanih seznamov: posamezno povezan seznam in dvojno povezan seznam.
Enotno povezan element seznama lahko izvede struktura dveh članov. En član drži kazalec na naslednji element, drugi član pa referenčno točko (ednina za podatke).
Dvojno povezan element seznama lahko izvede struktura treh članov. Srednji član ima referenčno točko, medtem ko prvi in tretji član držita kazalce na sosednje elemente.
Aplikacije v čakalni vrsti
Čakalna vrsta je struktura podatkov prvi v prvem. V računalništvu obstajajo situacije, ko podatki prispejo v obliki čakalne vrste, kar zahteva vedenje prvi v prvem.
Skupna raba računalniških virov
Vir v računalniku je katera koli fizična ali navidezna komponenta z omejeno razpoložljivostjo. Vključujejo CPU, grafično kartico, trdi disk in pomnilnik. Skupna raba takega vira potrebuje čakalno vrsto.
Ravnanje s prekinitvami
Računalniške zunanje naprave morajo občasno prekiniti računalnik. S prekinitvami je treba ravnati na enak način, kot so prispeli. To potrebuje čakalno vrsto.
Upravljanje informacij.
Čakalno vrsto lahko na primer uporabite za upravljanje datotek aplikacije za opravilo, če so datoteke shranjene v računalniku.
Zaključek
Čakalna vrsta je struktura podatkov seznama, ki je bodisi posamezno povezan seznam bodisi dvojno povezan seznam. Praviloma je prvi element, ki vstopi na seznam, prvi element, ki izide. C ++ zagotavlja strukturo podatkov čakalne vrste v svoji standardni knjižnici. Kategorije funkcij članov in operaterjev, ki so na voljo za to strukturo, so konstrukcija čakalne vrste, dostop do elementov čakalne vrste, zmogljivost čakalne vrste, modifikatorji čakalne vrste in preobremenjeni operaterji.
Vsaka struktura podatkov o čakalni vrsti mora zagotavljati vsaj funkciji člana push () in pop (). push () pomeni pošiljanje novega elementa na zadnji strani čakalne vrste; in pop () pomeni odstranjevanje elementa na sprednji strani čakalne vrste. Na žalost te funkcije v C ++ ne vrnejo potisnjene ali izpuščene vrednosti. Torej, če želite poznati zadnji element pred potiskanjem, je treba uporabiti funkcijo extra back (); in če želite poznati prvi element pred pojavljanjem, je treba uporabiti dodatno funkcijo front ().
Vrednost je za podatkovni tip, kot instancirani objekt za razred. Torej lahko določen razred uporabimo kot podatkovni tip za instanco predloge čakalne vrste. Različni predmeti za razred postanejo kot različne vrednosti za razred.
V čakalni vrsti so aplikacije v računalniku. Uporablja se lahko na primer za upravljanje aplikacijskih datotek za delo, če so datoteke shranjene v računalniku.
Chrys