Introduksjon
En kø er en samling varer, der det første elementet som legges til i listen, må være det første elementet som skal fjernes neste. Så når ting blir lagt til i samlingen, vokser den i størrelse, dvs.e. den vokser i lengde. Når et element skal fjernes, må det være det første som legges til. Hvis gjenstander fjernes kontinuerlig, er den neste som fjernes den andre varen. den tredje fjernes etterpå, og så videre.
Etter at det første elementet i den opprinnelige listen er fjernet, blir det andre det første elementet. Etter at det andre elementet er fjernet, blir det tredje det første elementet, og så videre.
Et godt eksempel på kø i virkeligheten er når folk stiller opp for å vente på service eller godt. Den første personen blir servert først før den siste. Imidlertid er køen som er snakket om i denne opplæringen, programvarekøen, som designet i C++.
FIFO
FIFO står for First-In, First-Out. Det er en annen måte å sette pris på køen på. Dette betyr at det første elementet som kommer inn i listen, er det første elementet som skal fjernes når fjerning skal finne sted. Begynnelsen på listen kalles hodet eller fronten; slutten av listen kalles ryggen eller halen.
Viktige operasjoner
En programvarekø må ha minst følgende operasjoner:
trykk
Denne operasjonen legger til et nytt element på baksiden av køen. Denne operasjonen kalles offisielt enqueue.
skifte
Denne operasjonen fjerner det første elementet i køen, og det andre elementet blir det nye første elementet. Denne operasjonen kalles offisielt dequeue. Det kalles pop i C++.
Denne artikkelen forklarer hvordan du bruker C ++ kødatastruktur. Du bør vite C ++ pekere og referanser for å forstå resten av denne artikkelen.
Klasse og gjenstander
En klasse er et sett med variabler og funksjoner som fungerer sammen, der variablene ikke har verdier tildelt. Når verdier tildeles variablene, blir klassen et objekt. Ulike verdier gitt til samme klasse resulterer i forskjellige objekter; det vil si at forskjellige objekter er den samme klassen med forskjellige verdier. Å lage et objekt fra en klasse sies å instantere objektet.
Navnet, køen, er en klasse. Et objekt opprettet fra køklassen har et programmør valgt navn.
En funksjon som tilhører en klasse er nødvendig for å instantiere et objekt fra klassen. I C ++ har den funksjonen samme navn som navnet på klassen. Objekter som er opprettet (instantiert) fra klassen har forskjellige navn gitt av programmereren.
Å lage et objekt fra klassen betyr å konstruere objektet; det betyr også å instantiere.
Et C ++ - program som bruker køklassen, starter med følgende linjer øverst i filen:
#inkludere#inkludere
bruker navneområde std;
Den første linjen er for inngang / utgang. Den andre linjen er å la programmet bruke alle funksjonene i køklassen. Den tredje linjen lar programmet bruke navnene i standard navneområdet.
Overbelastning av en funksjon
Når to eller flere forskjellige funksjonssignaturer har samme navn, sies det at navnet er overbelastet. Når en funksjon kalles, bestemmer antall og type argumenter hvilken funksjon som faktisk utføres.
Konstruksjon
køFølgende erklæring instantierer en kø med navnet, que av typen int.
køKøen er tom. Erklæringen begynner med det reserverte ordet, kø etterfulgt av vinkelparenteser med datatypen. Så har du programmereren gitt navn på køen.
Konstruksjon med initialiseringsliste
Følgende definisjon viser hvordan du oppretter en kø med initialiseringsliste:
køÅ ødelegge en kø
For å ødelegge en kø, bare la den gå utenfor omfanget.
Køelementtilgang
trykk (verdi)
En kø er en først-inn-først-ut-liste. Så hver verdi legges til fra baksiden. Følgende kodesegment oppretter en tom kø, hvoretter fem flytverdier legges til bakfra:
køque.trykk (1.1);
que.trykk (2.2);
que.trykk (3.3);
que.trykk (4.4);
que.trykk (5.5);
størrelse () konst
Dette returnerer antall elementer i køen. Følgende kode illustrerer:
køque.trykk (1.1); que.trykk (2.2); que.trykk (3.3); que.trykk (4.4); que.trykk (5.5);
cout << que.size() << '\n';
Utgangen er 5.
front()
Dette returnerer en referanse til det første elementet i køen, uten å fjerne elementet. Resultatet av følgende kode er 1.1.
køque.trykk (1.1); que.trykk (2.2); que.trykk (3.3); que.trykk (4.4); que.trykk (5.5);
cout << que.front() << '\n';
Elementet fjernes ikke fra køen.
front () konst
Når køkonstruksjonen er foran med const, blir uttrykket "front () const" utført i stedet for "front ()". Den brukes for eksempel i følgende kode.
const køcout << que.front() << '\n';
En konstant referanse returneres. Elementet fjernes ikke fra vektoren. Køelementene kan ikke endres.
tilbake()
Dette returnerer en referanse til det siste elementet i køen, uten å fjerne elementet. Utdataene fra følgende kode er 5.5.
køque.trykk (1.1); que.trykk (2.2); que.trykk (3.3); que.trykk (4.4); que.trykk (5.5);
cout << que.back() << '\n';
tilbake () konst
Når køkonstruksjonen går foran const, blir uttrykket "back () const" utført i stedet for "back ()". Den brukes for eksempel i følgende kode.
const køcout << que.back() << '\n';
En konstant referanse returneres. Elementet fjernes ikke fra køen. Med den foregående konstansen for køkonstruksjonen, kan ikke elementene i køen endres.
Køkapasitet
størrelse () konst
- se ovenfor
tom () konst
Dette returnerer 1 for true hvis det ikke er noen elementer i køen, eller 0 for false hvis køen er tom. Følgende kode illustrerer dette:
køcout << que1.empty() << '\n';
kø
cout << que2.empty() << '\n';
Utgangen er:
01
Kømodifikatorer
pop ()
En kø er FIFO, så ethvert element som må fjernes må fjernes fra toppen (hodet) av køen. Denne medlemsfunksjonen fjerner det første elementet uten å returnere det. Følgende kode illustrerer dette:
køcout << que.front() << '\n';
que.pop ();
cout << que.size() << '\n';
Utgangen er:
1.14
en.bytte (b)
To køer kan byttes ut, som illustrert i dette kodesegmentet:
køkø
que1.bytte (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';
Utgangen er:
Første element og størrelse på que1: 10, 2
Første element og størrelse på que2: 1.1, 5
Merk at lengden på køen økes om nødvendig. Verdier som ikke har erstatninger, blir også erstattet av noen standardverdier. Datatypene må være av samme type.
Likestillings- og relasjonsoperatører for køer
For vanlige tegn i C ++, i stigende rekkefølge, kommer tall før store bokstaver, som kommer før små bokstaver. Romkarakteren kommer foran null og alle sammen.
Likestillingsoperatører
Returnerer 1 for true og 0 for false.
Operatøren ==
Returnerer 1 hvis de to køene har samme størrelse og de tilsvarende elementene er like; Ellers returnerer den 0. Eksempel:
køkø
int num = que1 == que2;
cout << num << '\n';
Utgangen er: 0.
De != Operatør
- motsatt av det ovennevnte. Eksempel:
køkø
int num = que1 != que2;
cout << num << '\n';
Utgangen er: 1.
Relasjonsoperatører
Returnerer 1 for true og 0 for false.
De < Operator
Returnerer 1 hvis den første køen er den første delmengden av den andre køen, med elementene i de to like delene er de samme og i samme rekkefølge. Hvis begge køene er av samme størrelse eller forskjellige størrelser, og beveger seg fra venstre til høyre, oppstår det et element i den første køen som er mindre enn det tilsvarende elementet i den andre køen, så vil 1 fortsatt bli returnert. Ellers returneres 0. Eksempel:
køkø
int num = que1 < que2;
cout << num << '\n';
Utgangen er 1. < does not include the case when the size and order are the same.
> Operatøren
- motsatt av det ovennevnte. Eksempel:
køkø
int num = que1> que2;
cout << num << '\n';
Utgang: 0
De <= Operator
- samme som < but includes the case when the size and order are the same. Example:
køkø
int num = que1 <= que2;
cout << num << '\n';
Utgang: 1
Operatøren
- motsatt av det ovennevnte. Eksempel:
køkø
int num = que1> = que2;
cout << num << '\n';
Utgang: 0
Klasse og dets øyeblikkelige gjenstander
En verdi er til en datatype, som et instantiert objekt er til en klasse. Køkonstruksjonen kan også akseptere en klasse som datatype. Følgende program illustrerer dette:
#inkludere#inkludere
bruker navneområde std;
klasse TheCla
offentlig:
int num;
statisk forkullning;
void func (char cha, const char * str)
cout << "There are " << num << " books worth " << cha << str << " in the store." << '\n';
statisk tomrom moro (char ch)
hvis (ch == 'a')
cout << "Official static member function" << '\n';
;
int main ()
TheCla obj1; TheCla obj2; TheCla obj3; TheCla obj4; TheCla obj5;
kø
que.skyv (obj1); que.skyv (obj2); que.skyv (obj3); que.skyv (obj4); que.skyv (obj5);
cout << que.size() << '\n';
retur 0;
Utgangen er 5.
Koblet liste
Kølisten kalles teknisk en koblet liste. Det er to typer koblede lister for køen: enkeltkoblet liste og dobbeltkoblet liste.
Et enkeltkoblet listeelement kan implementeres av en struktur på to medlemmer. Det ene medlemmet holder en peker til det neste elementet og det andre medlemmet holder datoen (entall for data).
Et dobbeltkoblet listeelement kan implementeres av en struktur på tre medlemmer. Midtmedlemmet holder referansen, mens det første og tredje medlemmet holder pekepinner til de tilstøtende elementene.
Anvendelser av køen
Køen er en først-i-først-ut-datastruktur. Det er situasjoner i databehandling når data kommer i form av en kø, noe som krever først-inn-først ut-oppførsel.
Dele dataressurser
En ressurs i en datamaskin er en hvilken som helst fysisk eller virtuell komponent med begrenset tilgjengelighet. De inkluderer CPU, skjermkort, harddisk og minne. Deling av en slik ressurs trenger kø.
Håndtering av avbrudd
Datamaskinutstyr må av og til avbryte datamaskinen. Avbruddene må håndteres på samme måte som de ankom. Dette trenger en kø.
Administrer informasjon.
Køen kan for eksempel brukes til å administrere applikasjonsfiler for en jobb, hvis filene er lagret på datamaskinen.
Konklusjon
En kø er en listedatastruktur, som enten er en enkeltkoblet liste eller en dobbeltkoblet liste. Som regel er det første elementet som kommer inn på listen det første elementet som kommer ut. C ++ gir en kødatastruktur i standardbiblioteket. Kategoriene av medlemsfunksjoner og operatører som er tilgjengelige for denne strukturen er køkonstruksjon, køelementtilgang, køkapasitet, køendringer og køoverbelastede operatører.
Enhver kødatastruktur må inneholde minst funksjonene push () og pop (). push () betyr, sender et nytt element på baksiden av køen; og pop () betyr å fjerne elementet som er foran i køen. Dessverre, i C ++, returnerer ikke disse funksjonene verdien som er dyttet eller poppet. Så for å kjenne det siste elementet før du skyver, må den ekstra back () -funksjonen brukes; og for å kjenne det første elementet før du popper, må den ekstra fronten () -funksjonen brukes.
En verdi er til en datatype, som et instantiert objekt er til en klasse. Så, en bestemt klasse kan brukes som datatype for kø-malinstansiering. Ulike objekter for klassen blir som forskjellige verdier for klassen.
Køen har applikasjoner på datamaskinen. Den kan for eksempel brukes til å administrere applikasjonsfiler for en jobb, hvis filene er lagret på datamaskinen.
Chrys