Kako uporabljati čakalno vrsto C ++

How Use C Queue



Uvod

Čakalna vrsta je zbirka elementov, pri katerih mora biti prvi element, ki je dodan na seznam, prvi element, ki ga je treba odstraniti. Ko se zbirki dodajajo predmeti, se ta povečuje, kar pomeni, da narašča v dolžino. Kadar koli želite odstraniti kateri koli element, mora biti prvi dodan. Če se elementi neprestano odstranjujejo, je naslednji odstranjen drugi element; tretji se nato odstrani itd.

Ko je bil prvi element prvotnega seznama odstranjen, drugi postane prvi element. Po odstranitvi drugega elementa tretji postane prvi element itd.







Dober primer čakalne vrste v resnici je, ko se ljudje postavijo v vrsto in čakajo na storitev ali dobro. Prva oseba je vročena prva pred zadnjo. Vendar je čakalna vrsta, o kateri smo govorili v tej vadnici, čakalna vrsta programske opreme, kot je zasnovana v C ++.



FIFO

FIFO pomeni First-In, First-Out. To je še en način, kako ceniti čakalno vrsto. To pomeni, da je prvi element, ki vstopi na seznam, prvi element, ki ga je treba odstraniti, kadar koli bo prišlo do odstranitve. 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 operacije:





potiskati

Ta operacija doda nov element na zadnji strani čakalne vrste. Ta operacija se uradno imenuje enqueue.



premik

Ta operacija odstrani prvi element čakalne vrste, drugi element pa postane novi prvi element. Ta operacija se uradno imenuje dequeue. V C ++ se imenuje pop.

Ta članek pojasnjuje, kako uporabljati podatkovno strukturo čakalne vrste C ++. Če želite razumeti preostanek tega članka, morate poznati kazalce in reference C ++.

Razred in predmeti

Razred je niz spremenljivk in funkcij, ki delujejo skupaj, pri čemer spremenljivkam nimajo dodeljenih vrednosti. Ko so spremenljivkam dodeljene vrednosti, postane razred objekt. Različne vrednosti, podane istemu razredu, povzročijo različne predmete; to pomeni, da so različni predmeti isti razred z različnimi vrednostmi. Ustvarjanje predmeta iz razreda naj bi pomenilo nastanek predmeta.

Ime, čakalna vrsta, je razred. Objekt, ustvarjen iz razreda čakalne vrste, ima ime, ki ga izbere programer.

Funkcija, ki pripada razredu, je potrebna za ustvarjanje primerka predmeta iz razreda. V C ++ ima ta funkcija isto ime kot ime razreda. Objekti, ki jih je ustvaril (ustvaril primerek) iz razreda, jim je programer dal različna imena.

Ustvarjanje predmeta iz razreda pomeni izdelavo predmeta; pomeni tudi instanciranje.

Program C ++, ki uporablja razred čakalne vrste, se začne z naslednjimi vrsticami na vrhu datoteke:

#vključi
#vključi
z uporabo imenskega prostora std;

Prva vrstica je za vnos/izhod. Druga vrstica mora programu omogočiti uporabo vseh funkcij razreda čakalnih vrst. Tretja vrstica omogoča programu uporabo imen v standardnem imenskem prostoru.

Preobremenitev funkcije

Kadar imata dva ali več različnih podpisov funkcij isto ime, je to ime preobremenjeno. Ko se pokliče ena funkcija, število in vrsta argumentov določata, katera funkcija je dejansko izvedena.

Gradnja

čakalna vrsta<tip>ime()

Naslednja deklaracija ustvarja čakalno vrsto, que vrste int.

čakalna vrsta<int>to;

Čakalna vrsta je prazna. Izjava se začne z rezervirano besedo, čakalno vrsto, ki ji sledijo kotni oklepaji s podatkovnim tipom. Potem imaš programer ime za čakalno vrsto.

Sestavljanje s seznamom pobudnikov

Naslednja definicija prikazuje, kako ustvariti čakalno vrsto s seznamom inicializatorjev:

čakalna vrsta<plavati>to({1.1, 2.2, 3.3, 4.4});

Uničenje čakalne vrste

Če želite uničiti čakalno vrsto, jo pustite izven obsega.

Dostop do elementa čakalne vrste

push (vrednost)

Čakalna vrsta je seznam First-In-First-Out. Torej se vsaka vrednost doda z zadnje strani. Naslednji kodni segment ustvari prazno čakalno vrsto, po kateri se od zadaj doda pet plavajočih vrednosti:

čakalna vrsta<plavati>to;

to.potiskati(1.1);
to.potiskati(2.2);
to.potiskati(3.3);
to.potiskati(4.4);
to.potiskati(5.5);

velikost () konst

To vrne število elementov v čakalni vrsti. Naslednja koda ponazarja:

čakalna vrsta<plavati>to;
to.potiskati(1.1);to.potiskati(2.2);to.potiskati(3.3);to.potiskati(4.4);to.potiskati(5.5);
stroški<<to.velikost() << ' n';

Izhod je 5.

spredaj ()

To vrne sklic na prvi element čakalne vrste, ne da bi odstranili element. Izhod naslednje kode je 1.1.

čakalna vrsta<plavati>to;
to.potiskati(1.1);to.potiskati(2.2);to.potiskati(3.3);to.potiskati(4.4);to.potiskati(5.5);
stroški<<to.spredaj() << ' n';

Element ni odstranjen iz čakalne vrste.

spredaj () const

Ko je pred gradnjo čakalne vrste const, se namesto front () izvede izraz front () const. Uporablja se na primer v naslednji kodi.

constčakalna vrsta<plavati>to({1.1, 2.2, 3.3, 4.4, 5.5});
stroški<<to.spredaj() << ' 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 odstranili element. Izhod naslednje kode je 5.5.

čakalna vrsta<plavati>to;
to.potiskati(1.1);to.potiskati(2.2);to.potiskati(3.3);to.potiskati(4.4);to.potiskati(5.5);
stroški<<to.nazaj() << ' n';

nazaj () const

Ko je pred konstrukcijo čakalne vrste const, se namesto back () izvede izraz back () const. Uporablja se na primer v naslednji kodi.

constčakalna vrsta<plavati>to({1.1, 2.2, 3.3, 4.4, 5.5});
stroški<<to.nazaj() << ' n';

Vrne se stalna referenca. Element ni odstranjen iz čakalne vrste. S prejšnjim constom za konstrukcijo čakalne vrste elementov v čakalni vrsti ni mogoče spremeniti.

Kapaciteta čakalne vrste

velikost () konst

- glej zgoraj

prazno () konst

To vrne 1 za true, če v čakalni vrsti ni elementov, ali 0 za false, če je čakalna vrsta prazna. Naslednja koda ponazarja to:

čakalna vrsta<plavati>to1({1.1, 2.2, 3.3, 4.4, 5.5});
stroški<<to1.prazno() << ' n';
čakalna vrsta<plavati>to 2;
stroški<<to 2.prazno() << ' n';

Izhod je:

0
1

Modifikatorji čakalnih vrst

pop ()

Čakalna vrsta je FIFO, zato je treba vsak element, ki ga je treba odstraniti, odstraniti z vrha (glave) čakalne vrste. Ta članska funkcija odstrani prvi element, ne da bi ga vrnila. Naslednja koda ponazarja to:

čakalna vrsta<plavati>to({1.1, 2.2, 3.3, 4.4, 5.5});
stroški<<to.spredaj() << ' n';
to.pop();
stroški<<to.velikost() << ' n';

Izhod je:

1.1
4

a.swap (b)

Kot je prikazano v tem segmentu kod, lahko zamenjate dve čakalni vrsti:

čakalna vrsta<plavati>to1({1.1, 2.2, 3.3, 4.4, 5.5});
čakalna vrsta<plavati>to 2({10, dvajset});
to1.zamenjati(to 2);
stroški<< „Prvi element in velikost que1:
'
<<to1.spredaj() <<','<<to1.velikost() << ' n';
stroški<< 'Prvi element in velikost que2'<<
to 2.spredaj() <<','<<to 2.velikost() << ' n';

Izhod 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. Tudi vrednosti, ki niso imele zamenjav, se nadomestijo z neko privzeto vrednostjo. Podatkovni tipi morajo biti iste vrste.

Operaterji enakosti in relacije za čakalne vrste

Za navadne znake v C ++ so v naraščajočem vrstnem redu številke pred velikimi črkami, ki pred malimi. Vesoljski znak je pred ničlo in vsi.

Operaterji enakosti

Vrne 1 za true in 0 za false.

Operater ==

Vrne 1, če sta čakalni vrsti enake velikosti in so ustrezni elementi enaki; sicer vrne 0. Primer:

čakalna vrsta<const char*>to1({'prijazen', 'nekaj drugega'});
čakalna vrsta<const char*>to 2({'hudoben'});
intna enem=to1==to 2;
stroški<<na enem<< ' n';

Izhod je: 0.

! = Operater

- nasprotno od zgoraj navedenega. Primer:

čakalna vrsta<const char*>to1({'prijazen', 'nekaj drugega'});
čakalna vrsta<const char*>to 2({'hudoben'});
intna enem=to1! =to 2;
stroški<<na enem<< ' n';

Izhod je: 1.

Relacijski operaterji

Vrne 1 za true in 0 za false.

The

Vrne 1, če je prva čakalna vrsta začetna podmnožica druge čakalne vrste, pri čemer so elementi dveh enakih delov enaki in v istem vrstnem redu. Če sta obe čakalni vrsti enake velikosti ali različnih velikosti in se premikata od leve proti desni, se v prvi čakalni vrsti pojavi element, ki je manjši od ustreznega elementa v drugi čakalni vrsti, potem bo 1 še vedno vrnjen. V nasprotnem primeru se vrne 0. Primer:

čakalna vrsta<const char*>to1({'prijazen', 'nekaj drugega'});
čakalna vrsta<const char*>to 2({'hudoben'});
intna enem=to1<to 2;
stroški<<na enem<< ' n';

Izhod je 1.

> Operater

- nasprotno od zgoraj navedenega. Primer:

čakalna vrsta<const char*>to1({'prijazen', 'nekaj drugega'});
čakalna vrsta<const char*>to 2({'hudoben'});
intna enem=to1>to 2;
stroški<<na enem<< ' n';

Izhod: 0

The<= Operator

- enako kot čakalna vrsta<const char*>to1({'prijazen', 'nekaj drugega'});
čakalna vrsta<const char*>to 2({'hudoben'});
intna enem=to1<=to 2;
stroški<<na enem<< ' n';

Izhod: 1

Operater> =

- nasprotno od zgoraj navedenega. Primer:

čakalna vrsta<const char*>to1({'prijazen', 'nekaj drugega'});
čakalna vrsta<const char*>to 2({'hudoben'});
intna enem=to1> =to 2;
stroški<<na enem<< ' n';

Izhod: 0

Razred in njegovi nenamerni predmeti

Vrednost je za podatkovni tip, kot je primerek za razred. Konstrukcija čakalne vrste lahko sprejme tudi razred kot podatkovni tip. Naslednji program to ponazarja:

#vključi
#vključi
z uporabo imenskega prostora std;
razred TheCla
{
javno:
intna enem;
statična charpogl;
ničnofunkcijo(charne, const char *str)
{
stroški<< 'Obstajajo' <<na enem<< 'knjige vredne' <<ne<<str<< 'v trgovini.' << ' n';
}
statična ničnozabavno(charpogl)
{
če (pogl== 'do')
stroški<< 'Uradna statična funkcija člana' << ' n';
}
};
intglavni()
{
TheCla obj1;TheCla obj2;TheCla obj3;TheCla obj4;TheCla obj5;
čakalna vrsta<TheCla>to;
to.potiskati(obj1);to.potiskati(obj2);to.potiskati(obj3);to.potiskati(obj4);to.potiskati(obj5);
stroški<<to.velikost() << ' n';
vrnitev 0;
}

Izhod je 5.

Povezani seznam

Seznam čakalnih vrst se tehnično imenuje povezan seznam. Za čakalno vrsto obstajata dve vrsti povezanih seznamov: posamezno povezan seznam in dvojno povezan seznam.

Posamezno povezan element seznama se lahko izvede s strukturo dveh članov. En član drži kazalec na naslednji element, drugi član pa referenčno točko (ednino za podatke).

Dvojno povezan element seznama se lahko izvede s strukturo treh članov. Srednji član drži referenčno točko, medtem ko prvi in ​​tretji član držita kazalca na sosednjih elementih.

Aplikacije čakalne vrste

Čakalna vrsta je struktura podatkov prvi v prvem izhodu. V računalništvu obstajajo situacije, ko podatki prispejo v obliki čakalne vrste, kar zahteva vedenje med prvimi v prvem.

Skupna raba računalniških virov

Vir v računalniku je vsaka fizična ali navidezna komponenta omejene razpoložljivosti. Vključujejo procesor, video kartico, trdi disk in pomnilnik. Skupna raba takega vira potrebuje čakalno vrsto.

Ravnanje s prekinitvami

Računalniške zunanje naprave morajo računalnik občasno prekiniti. Prekinitve je treba obravnavati na enak način, kot so prispele. To zahteva čakalno vrsto.

Upravljajte podatke.

Čakalno vrsto lahko na primer uporabite za upravljanje aplikacijskih datotek za opravilo, če so datoteke shranjene v računalniku.

Zaključek

Čakalna vrsta je podatkovna struktura seznama, ki je bodisi posamično povezan ali dvojno povezan seznam. Praviloma je prvi element, ki vstopi na seznam, prvi element, ki pride ven. C ++ ponuja podatkovno strukturo čakalne vrste v svoji standardni knjižnici. Kategorije članskih funkcij in operaterjev, ki so na voljo za to strukturo, so konstrukcija čakalne vrste, dostop do elementov čakalne vrste, zmogljivost čakalne vrste, modifikatorji čakalnih vrst in preobremenjeni operaterji čakalnih vrst.

Vsaka podatkovna struktura čakalne vrste mora zagotavljati vsaj funkcijo push () in pop (). push () pomeni pošiljanje novega elementa na zadnji strani čakalne vrste; in pop () pomeni odstranitev elementa, ki je na sprednji strani čakalne vrste. Na žalost v C ++ te funkcije ne vrnejo potisnjene ali skočene vrednosti. Torej, če želite poznati zadnji element pred potiskanjem, morate uporabiti dodatno funkcijo back (); in če želite poznati prvi element, preden se pojavi, je treba uporabiti dodatno funkcijo front ().

Vrednost je za podatkovni tip, kot je primerek za razred. Tako se lahko določen razred uporabi kot podatkovni tip za primerek predloge čakalne vrste. Različni predmeti za razred postanejo kot različne vrednosti za razred.

V čakalni vrsti so aplikacije v računalniku. Z njim lahko na primer upravljate datoteke aplikacij za opravilo, če so datoteke shranjene v računalniku.

Chrys