Įvadas
Eilė yra elementų rinkinys, kur pirmasis į sąrašą įtrauktas elementas turi būti pirmasis pašalinamas elementas. Taigi, kai daiktai pridedami prie kolekcijos, jos dydis auga, t.e. jis ilgėja. Kiekvieną daiktą pašalinus, jis turi būti pirmasis. Jei daiktai pašalinami nuolat, kitas pašalinamas yra antrasis elementas; trečias po to pašalinamas ir pan.
Pašalinus pirmąjį pirminio sąrašo elementą, antrasis tampa pirmuoju elementu. Pašalinus antrąjį elementą, trečiasis tampa pirmuoju ir t.
Geras realus eilės pavyzdys yra tai, kai žmonės rikiuojasi laukdami paslaugos ar gero. Pirmasis asmuo tarnauja pirmas prieš paskutinį. Tačiau eilė, apie kurią kalbėta šioje pamokoje, yra programinės įrangos eilė, suprojektuota C++.
FIFO
FIFO reiškia „First-In“, „First-Out“. Tai dar vienas būdas įvertinti eilę. Tai reiškia, kad pirmasis elementas, įtrauktas į sąrašą, yra pirmasis elementas, kuris turi būti pašalintas, kai tik jis turi būti pašalintas. Sąrašo pradžia vadinama galva arba priekiu; sąrašo pabaiga vadinama nugara ar uodega.
Esminės operacijos
Programinės įrangos eilėje turi būti bent šios operacijos:
stumti
Ši operacija prideda naują elementą eilės gale. Ši operacija oficialiai vadinama enqueue.
pamainą
Ši operacija pašalina pirmąjį eilės elementą, o antrasis tampa nauju pirmuoju elementu. Ši operacija oficialiai vadinama dequeue. C vadinama popmuzika++.
Šiame straipsnyje paaiškinta, kaip naudoti C ++ eilės duomenų struktūrą. Turėtumėte žinoti C ++ rodykles ir nuorodas, kad suprastumėte likusią šio straipsnio dalį.
Klasė ir objektai
Klasė yra kintamųjų ir funkcijų rinkinys, veikiantis kartu, kai kintamieji neturi priskirtų reikšmių. Kai kintamiesiems priskiriamos reikšmės, klasė tampa objektu. Skirtingos tos pačios klasės vertės suteikia skirtingus objektus; tai yra skirtingi objektai yra ta pati klasė su skirtingomis vertėmis. Sakoma, kad kuriant objektą iš klasės, objektas yra momentinis.
Pavadinimas, eilė yra klasė. Objektas, sukurtas iš eilės klasės, turi programuotojo pasirinktą pavadinimą.
Klasei priklausanti funkcija reikalinga objektui iš klasės sukurti. Programoje C ++ ši funkcija turi tą patį pavadinimą kaip ir klasės pavadinimas. Objektai, sukurti (instancijuoti) iš klasės, turi skirtingus pavadinimus, kuriuos jiems suteikia programuotojas.
Objekto sukūrimas iš klasės reiškia objekto sukūrimą; tai taip pat reiškia akimirksnį.
C ++ programa, naudojanti eilių klasę, prasideda šiomis eilutėmis failo viršuje:
# įtraukti# įtraukti
naudojant vardų sritį std;
Pirmoji eilutė skirta įvesties / išvesties. Antroji eilutė - leisti programai naudoti visas eilės klasės funkcijas. Trečioji eilutė leidžia programai naudoti vardus standartinėje vardų srityje.
Funkcijos perkrova
Kai du ar daugiau skirtingų funkcijų parašų turi tą patį pavadinimą, sakoma, kad šis vardas perkrautas. Kai iškviečiama viena funkcija, argumentų skaičius ir tipas nustato, kuri funkcija iš tikrųjų vykdoma.
Statyba
eilėŠi deklaracija sukuria eilės pavadinimą, eilės tipo int.
eilėEilė tuščia. Deklaracija prasideda rezervuotu žodžiu, eile, po kurios yra kampiniai skliaustai su duomenų tipu. Tada jūs turite programuotojui suteikti eilės pavadinimą.
Konstrukcija naudojant inicializatorių sąrašą
Šis apibrėžimas parodo, kaip sukurti eilę su inicializatorių sąrašu:
eilėEilės naikinimas
Norėdami sunaikinti eilę, tiesiog leiskite jai išeiti iš taikymo srities.
Prieiga prie eilės elemento
stumti (vertė)
Eilė yra „First-in-First-Out“ sąrašas. Taigi, kiekviena vertė pridedama iš galo. Šis kodo segmentas sukuria tuščią eilę, po kurios iš galo pridedamos penkios kintamosios vertės:
eilėeilė.stumti (1.1);
eilė.stumti (2.2);
eilė.stumti (3.3);
eilė.stumti (4.4);
eilė.stumti (5.5);
dydis () konst
Tai pateikia eilės elementų skaičių. Šis kodas iliustruoja:
eilėeilė.stumti (1.1); eilė.stumti (2.2); eilė.stumti (3.3); eilė.stumti (4.4); eilė.stumti (5.5);
cout << que.size() << '\n';
Išvestis yra 5.
priekis ()
Tai grąžina nuorodą į pirmąjį eilės elementą, nepašalinant elemento. Šio kodo išvestis yra 1.1.
eilėeilė.stumti (1.1); eilė.stumti (2.2); eilė.stumti (3.3); eilė.stumti (4.4); eilė.stumti (5.5);
cout << que.front() << '\n';
Elementas nepašalinamas iš eilės.
priekis () konst
Kai prieš eilės sudarymą yra „const“, vietoj „front ()“ vykdoma išraiška „front () const“. Pavyzdžiui, jis naudojamas šiame kode.
const eilėcout << que.front() << '\n';
Grąžinama pastovi nuoroda. Elementas nėra pašalinamas iš vektoriaus. Eilės elementų pakeisti negalima.
atgal ()
Tai grąžina nuorodą į paskutinį eilės elementą, nepašalinant elemento. Šio kodo išvestis yra 5.5.
eilėeilė.stumti (1.1); eilė.stumti (2.2); eilė.stumti (3.3); eilė.stumti (4.4); eilė.stumti (5.5);
cout << que.back() << '\n';
atgal () konst
Kai prieš eilės sudarymą yra „const“, vietoj „back ()“ vykdoma išraiška „back () const“. Pavyzdžiui, jis naudojamas šiame kode.
const eilėcout << que.back() << '\n';
Grąžinama pastovi nuoroda. Elementas nepašalinamas iš eilės. Su ankstesne eilės sudarymo konstante eilės elementų pakeisti negalima.
Eilės talpa
dydis () konst
- pažiūrėkite aukščiau
tuščias () konst
Pateikiama 1 reikšmė „true“, jei eilėje nėra elementų, arba 0 - „false“, jei eilė tuščia. Tai iliustruoja šis kodas:
eilėcout << que1.empty() << '\n';
eilė
cout << que2.empty() << '\n';
Rezultatas yra:
01
Eilės modifikatoriai
pop ()
Eilė yra FIFO, todėl visi elementai, kuriuos reikia pašalinti, turi būti pašalinti iš eilės viršaus (galvos). Ši nario funkcija pašalina pirmąjį elementą negrąžindama jo. Tai iliustruoja šis kodas:
eilėcout << que.front() << '\n';
eilė.popsas ();
cout << que.size() << '\n';
Rezultatas yra:
1.14
a.apsikeisti (b)
Kaip pavaizduota šiame kodų segmente, galima sukeisti dvi eiles:
eilėeilė
1 eilutė.apsikeitimas (que2);
cout << "First element and size of que1:
"<< que1.front() <<", "<< que1.size() << '\n';
cout << "First element and size of que2 "<<
2 eilutė.priekis () <<", "<< que2.size() << '\n';
Rezultatas yra:
Pirmasis que1 elementas ir dydis: 10, 2
Pirmasis que2 elementas ir dydis: 1.1, 5
Atminkite, kad, jei reikia, eilės ilgis padidinamas. Be to, reikšmės, neturinčios pakeitimų, pakeičiamos tam tikra numatytąja verte. Duomenų tipai turi būti to paties tipo.
Eilių lygybės ir santykių operatoriai
Paprastiems simboliams C ++ didėjančia tvarka skaičiai eina prieš didžiąsias, o prieš mažąsias. Erdvės simbolis yra prieš nulį ir visi jie.
Lygybės operatoriai
Pateikia 1 už teisingą ir 0 už klaidingą.
== Operatorius
Grąžina 1, jei dvi eilės yra vienodo dydžio ir atitinkami elementai yra vienodi; kitaip jis grąžina 0. Pavyzdys:
eilėeilė
int num = que1 == que2;
cout << num << '\n';
Išvestis yra: 0.
The != Operatorius
- priešingai nei aukščiau. Pavyzdys:
eilėeilė
int num = que1 != que2;
cout << num << '\n';
Išvestis yra: 1.
Ryšių operatoriai
Pateikia 1 už teisingą ir 0 už klaidingą.
The < Operator
Grąžina 1, jei pirmoji eilė yra pradinis antrosios eilės pogrupis, kai dviejų lygių dalių elementai yra vienodi ir ta pačia tvarka. Jei abi eilės yra vienodo dydžio arba skirtingo dydžio ir juda iš kairės į dešinę, pirmoje eilėje susiduria elementas, kuris yra mažesnis nei atitinkamas antrosios eilės elementas, tada 1 vis tiek bus grąžintas. Kitu atveju grąžinama 0. Pavyzdys:
eilėeilė
int num = que1 < que2;
cout << num << '\n';
Išvestis yra 1. < does not include the case when the size and order are the same.
Operatorius
- priešingai nei aukščiau. Pavyzdys:
eilėeilė
int num = que1> que2;
cout << num << '\n';
Išvestis: 0
The <= Operator
- taip pat kaip < but includes the case when the size and order are the same. Example:
eilėeilė
int num = que1 <= que2;
cout << num << '\n';
Išvestis: 1
Operatorius> =
- priešingai nei aukščiau. Pavyzdys:
eilėeilė
int num = que1> = que2;
cout << num << '\n';
Išvestis: 0
Klasė ir jos momentiniai objektai
Vertė yra duomenų tipui, kaip momentinis objektas - klasei. Eilės konstrukcija taip pat gali priimti klasę kaip duomenų tipą. Tai iliustruoja ši programa:
# įtraukti# įtraukti
naudojant vardų sritį std;
klasė „TheCla“
vieša:
int num;
statinis char ch;
negaliojantis func (char cha, const char * str)
cout << "There are " << num << " books worth " << cha << str << " in the store." << '\n';
statinis tuštumas (char ch)
jei (ch == 'a')
cout << "Official static member function" << '\n';
;
int main ()
TheCla obj1; TheCla obj2; TheCla obj3; TheCla obj4; TheCla obj5;
eilė
eilė.stumti (obj1); eilė.stumti (obj2); eilė.stumti (obj3); eilė.stumti (obj4); eilė.stumti (obj5);
cout << que.size() << '\n';
grąžinti 0;
Išvestis yra 5.
Susietas sąrašas
Eilių sąrašas techniškai vadinamas susietu sąrašu. Eilėje yra dviejų tipų susieti sąrašai: vienas susietas sąrašas ir dvigubai susietas sąrašas.
Atskirai susietą sąrašo elementą gali įgyvendinti dviejų narių struktūra. Vienas narys turi rodyklę prie kito elemento, o kitas narys turi atskaitos tašką (vienaskaita duomenims).
Dvigubai susietą sąrašo elementą gali įgyvendinti trijų narių struktūra. Vidurinis narys turi atskaitos tašką, o pirmasis ir trečias nariai turi rodykles į gretimus elementus.
Eilės programos
Eilė yra „pirmas į pirmą“ duomenų struktūra. Skaičiuojant yra situacijų, kai duomenys gaunami eilės forma, todėl reikia elgtis „pirmas iš pirmo“.
Dalijimasis kompiuterio ištekliais
Ištekliai kompiuteryje yra bet kokie fiziniai ar virtualūs riboto prieinamumo komponentai. Jie apima procesorių, vaizdo plokštę, standųjį diską ir atmintį. Dalijantis tokiu ištekliu reikia eilės.
Tvarkyti pertraukas
Kompiuterių išoriniai įrenginiai turi laikas nuo laiko pertraukti kompiuterį. Su pertraukėliais reikia elgtis taip pat, kaip ir atvykus. Tam reikia eilės.
Tvarkykite informaciją.
Eilę galima naudoti, pavyzdžiui, tvarkant darbo programos failus, jei failai yra saugomi kompiuteryje.
Išvada
Eilė yra sąrašo duomenų struktūra, kuri yra atskirai susietas sąrašas arba dvigubai susietas sąrašas. Paprastai pirmasis elementas, patekęs į sąrašą, yra pirmasis elementas. C ++ pateikia eilės duomenų struktūrą savo standartinėje bibliotekoje. Narių funkcijų ir operatorių, galinčių naudoti šią struktūrą, kategorijos yra eilės sudarymas, prieiga prie eilės elementų, eilės talpa, eilės modifikatoriai ir eilės perkrovos operatoriai.
Bet kurioje eilės duomenų struktūroje turi būti bent „push“ () ir „pop“ () nario funkcijos. „push“) reiškia naujo elemento siuntimą eilės gale; ir pop () reiškia, kad pašalinamas elementas, esantis eilės priekyje. Deja, C ++ versijoje šios funkcijos negrąžina išstumtos ar iššokusios vertės. Taigi, norint žinoti paskutinį elementą prieš stumiant, reikia naudoti papildomą atgal () funkciją; ir norint sužinoti pirmąjį elementą prieš pasirodant, reikia naudoti papildomą front () funkciją.
Vertė yra duomenų tipui, kaip momentinis objektas - klasei. Taigi, tam tikra klasė gali būti naudojama kaip duomenų tipas eilės šablonui išgauti. Skirtingi klasės objektai tampa tarsi skirtingomis klasės vertybėmis.
Eilėje yra programos kompiuteryje. Jis gali būti naudojamas, pavyzdžiui, tvarkyti programos darbo failus, jei failai yra saugomi kompiuteryje.
Chrys