Bevezetés
A várólista olyan elemek gyűjteménye, ahol a listához hozzáadott első elemnek kell először eltávolítania a következőt. Tehát ahogy a tárgyakat hozzáadják a kollekcióhoz, növekszik a mérete, azaz.e. növekszik a hossza. Bármelyik elem eltávolításakor azt kell elsőként hozzáadni. Ha az elemeket folyamatosan eltávolítják, akkor a következő eltávolításra kerül, a második elem; a harmadikat utólag eltávolítják, és így tovább.
Miután eltávolította az eredeti lista első elemét, a második lesz az első elem. A második elem eltávolítása után a harmadik lesz az első elem, és így tovább.
A sorban való életre jó példa, amikor az emberek beállnak a sorba, hogy megvárják a szolgálatot vagy jót. Az első embert először az utolsó előtt szolgálják ki. Azonban ebben az oktatóanyagban a várakozási sor a szoftver várakozási sora, amint azt a C-ben tervezték++.
FIFO
A FIFO az First-In, First-Out rövidítéseket jelenti. Ez egy másik módja a sor megbecsülésének. Ez azt jelenti, hogy az első elem, amely belép a listába, az első elem, amelyet el kell távolítani, valahányszor eltávolításra kerül sor. A lista elejét fejnek vagy elejének nevezzük; a lista végét hátulnak vagy faroknak nevezzük.
Alapvető műveletek
A szoftversornak legalább a következő műveleteket kell végrehajtania:
nyom
Ez a művelet új elemet ad hozzá a sor hátuljához. Ezt a műveletet hivatalosan enqueue-nak hívják.
váltás
Ez a művelet eltávolítja a sor első elemét, és a második elem lesz az új első elem. Ezt a műveletet hivatalosan dequeue-nak hívják. C-ben popnak hívják++.
Ez a cikk elmagyarázza a C ++ várólista adatstruktúrájának használatát. A cikk további részének megértéséhez ismernie kell a C ++ mutatókat és hivatkozásokat.
Osztály és objektumok
Az osztály olyan változók és függvények együttese, amelyek együttesen működnek, ahol a változókhoz nincs hozzárendelve érték. Ha a változókhoz értékeket rendelünk, az osztály objektummá válik. Ugyanazon osztálynak adott különböző értékek különböző objektumokat eredményeznek; vagyis a különböző objektumok azonos osztályba tartoznak, különböző értékekkel. Egy objektum osztályból történő létrehozása állítólag az objektumot példányosítja.
A név, a sor egy osztály. A várólistából létrehozott objektumnak egy programozó által választott neve van.
Egy osztályhoz tartozó függvényre van szükség egy objektum példányosításához az osztályból. A C ++ nyelven ennek a függvénynek ugyanaz a neve, mint az osztály nevének. Az osztályból létrehozott (példányosított) objektumok különböző neveket kaptak a programozótól.
Objektum létrehozása az osztályból az objektum felépítését jelenti; instantizálást is jelent.
Egy C ++ program, amely a várólistát használja, a következő sorokkal kezdődik a fájl tetején:
#include#include
névtér használata std;
Az első sor a bemenetre / kimenetre vonatkozik. A második sor lehetővé teszi, hogy a program használhassa a várólista összes funkcióját. A harmadik sor lehetővé teszi a program számára a nevek használatát a szokásos névtérben.
Funkció túlterhelése
Ha két vagy több különböző funkció aláírásnak ugyanaz a neve, akkor azt mondják, hogy ez a név túlterhelt. Egy függvény meghívásakor az argumentumok száma és típusa határozza meg, hogy melyik függvényt hajtják végre.
Építkezés
sorA következő deklaráció egy, az int típusú que nevű sort állít elő.
sorA sor üres. A deklaráció a fenntartott szóval, sorral kezdődik, amelyet az adattípussal ellátott szögletes zárójelek követnek. Ezután megadta a programozó nevét a sorhoz.
Konstrukció az inicializáló listával
A következő definíció bemutatja, hogyan lehet létrehozni egy sort az inicializáló listával:
sorSor megsemmisítése
A sor megsemmisítéséhez hagyja, hogy kijusson a hatókörből.
A várólista-hozzáférés
nyomás (érték)
A várakozási sor egy First-In-First-Out lista. Tehát minden értéket hátulról adunk hozzá. A következő kódszegmens üres sort hoz létre, amely után öt úszó értéket adunk hozzá hátulról:
sorque.nyomja (1.1);
que.nyomja (2.2);
que.nyomja (3.3);
que.nyomja (4.4);
que.nyomja (5.5);
méret () konst
Ez visszaadja a sorban lévő elemek számát. A következő kód szemlélteti:
sorque.nyomja (1.1); que.nyomja (2.2); que.nyomja (3.3); que.nyomja (4.4); que.nyomja (5.5);
cout << que.size() << '\n';
A kimenet 5.
elülső()
Ez a sor első elemére mutat hivatkozást, az elem eltávolítása nélkül. A következő kód kimenete 1.1.
sorque.nyomja (1.1); que.nyomja (2.2); que.nyomja (3.3); que.nyomja (4.4); que.nyomja (5.5);
cout << que.front() << '\n';
Az elem nem kerül eltávolításra a sorból.
elülső () konst
Amikor a várakozási felépítést megelőzi az const, akkor a „front () const” kifejezés kerül végrehajtásra. Például a következő kódban használják.
const sorcout << que.front() << '\n';
Egy állandó referenciát adunk vissza. Az elem nem kerül eltávolításra a vektorból. A sor elemei nem módosíthatók.
vissza()
Ez a sor utolsó elemére utal, az elem eltávolítása nélkül. A következő kód kimenete 5.5.
sorque.nyomja (1.1); que.nyomja (2.2); que.nyomja (3.3); que.nyomja (4.4); que.nyomja (5.5);
cout << que.back() << '\n';
vissza () konst
Amikor a sor felépítését megelőzi az const, a „back () const” kifejezés kerül végrehajtásra a „back ()” helyett. Például a következő kódban használják.
const sorcout << que.back() << '\n';
Egy állandó referenciát adunk vissza. Az elem nem kerül eltávolításra a sorból. A sor felépítésének előző konstansával a sorban lévő elemek nem módosíthatók.
Sor kapacitás
méret () konst
- lásd fent
üres () konst
Ez 1 értéket ad vissza true értékre, ha nincsenek elemek a sorban, vagy 0 értéket hamis értékre, ha a sor üres. A következő kód ezt szemlélteti:
sorcout << que1.empty() << '\n';
sor
cout << que2.empty() << '\n';
A kimenet:
01
Sor módosítók
pop()
A sor FIFO, ezért minden eltávolítandó elemet el kell távolítani a sor tetejéről (fejéről). Ez a tagfüggvény eltávolítja az első elemet anélkül, hogy visszaadná. A következő kód ezt szemlélteti:
sorcout << que.front() << '\n';
que.pop();
cout << que.size() << '\n';
A kimenet:
1.14
a.csere (b)
Két sor felcserélhető, amint ezt a kódszegmens mutatja:
sorsor
que1.csere (que2);
cout << "First element and size of que1:
"<< que1.front() <<", "<< que1.size() << '\n';
cout << "First element and size of que2 "<<
que2.elülső() <<", "<< que2.size() << '\n';
A kimenet:
A que1 első eleme és mérete: 10, 2
A que2 első eleme és mérete: 1.1, 5
Vegye figyelembe, hogy szükség esetén a sor hossza megnő. Ezenkívül azokat az értékeket, amelyek nem voltak helyettesítők, valamilyen alapértelmezett érték váltja fel. Az adattípusoknak azonos típusúaknak kell lenniük.
Egyenlőség és kapcsolati operátorok a várólistákhoz
A C ++ nyelvű, hétköznapi karakterek esetében növekvő sorrendben a számok nagybetűk elé kerülnek, amelyek kisbetűk elé kerülnek. A szóköz karakter nulla és mindegyik elé kerül.
Egyenlőség operátorok
1-et ad igaznak, 0-t hamisnak.
A == Operátor
1-et ad vissza, ha a két sor azonos méretű és a megfelelő elemek egyenlőek; különben 0-t ad vissza. Példa:
sorsor
int szám = que1 == que2;
cout << num << '\n';
A kimenet: 0.
A != Operátor
- szemben a fentiekkel. Példa:
sorsor
int szám = que1 != que2;
cout << num << '\n';
A kimenet: 1.
Relációs operátorok
1-et ad igaznak, 0-t hamisnak.
A < Operator
1-et ad vissza, ha az első sor a második sor kezdeti részhalmaza, a két egyenlő rész elemei azonosak és ugyanabban a sorrendben. Ha mindkét sor azonos méretű vagy különböző méretű, és balról jobbra haladva az első sorban egy olyan elem találkozik, amely kisebb, mint a második sor megfelelő eleme, akkor az 1 továbbra is visszatér. Ellenkező esetben 0-t adunk vissza. Példa:
sorsor
int szám = que1 < que2;
cout << num << '\n';
A kimenet 1. < does not include the case when the size and order are the same.
Az> Operátor
- szemben a fentiekkel. Példa:
sorsor
int szám = que1> que2;
cout << num << '\n';
Kimenet: 0
A <= Operator
- ugyanaz, mint a < but includes the case when the size and order are the same. Example:
sorsor
int szám = que1 <= que2;
cout << num << '\n';
Kimenet: 1
A> = Operátor
- szemben a fentiekkel. Példa:
sorsor
int szám = que1> = que2;
cout << num << '\n';
Kimenet: 0
Osztály és azonnali tárgyai
Az érték egy adattípusra vonatkozik, mint a példányosított objektum egy osztályra. A várakozási sor egy osztályt is elfogadhat adattípusként. A következő program ezt szemlélteti:
#include#include
névtér használata std;
osztály TheCla
nyilvános:
int szám;
statikus char ch;
void func (char cha, const char * str)
cout << "There are " << num << " books worth " << cha << str << " in the store." << '\n';
statikus üresség (char ch)
ha (ch == 'a')
cout << "Official static member function" << '\n';
;
int main ()
TheCla obj1; TheCla obj2; TheCla obj3; TheCla obj4; TheCla obj5;
sor
que.nyomás (obj1); que.nyomja (obj2); que.nyomja (obj3); que.nyomja (obj4); que.nyomja (obj5);
cout << que.size() << '\n';
visszatér 0;
A kimenet 5.
Összekapcsolt lista
A várólistát technikailag összekapcsolt listának hívják. Kétféle összekapcsolt lista létezik a várólistához: egyenként és kétszeresen összekapcsolt listák.
Egy-egy összekapcsolt listaelemet két tagból álló struktúra valósíthat meg. Az egyik tag mutatót tart a következő elemre, a másik pedig a nullapontot (egyes szám az adatokra).
A kétszeresen összekapcsolt listaelemet három tagból álló struktúra valósíthatja meg. A középső tag tartja a nullapontot, míg az első és a harmadik tag a szomszédos elemeikre mutat.
A várólista alkalmazásai
A várakozási sor az első az elsőben ki adatstruktúra. Vannak olyan helyzetek a számítás során, amikor az adatok várólista formájában érkeznek, ami szükségessé teszi az első az elsőben-ki viselkedést.
Számítógépes erőforrások megosztása
A számítógép erőforrása a korlátozott rendelkezésre állás bármely fizikai vagy virtuális összetevője. Ezek közé tartozik a CPU, a videokártya, a merevlemez és a memória. Egy ilyen erőforrás megosztásához sorra van szükség.
Megszakítások kezelése
A számítógépes perifériáknak időről időre meg kell szakítaniuk a számítógépet. A megszakításokat ugyanúgy kell kezelni, mint amikor megérkeztek. Ehhez sorra van szükség.
Információk kezelése.
A sor használható például egy munka alkalmazásfájljainak kezelésére, ha a fájlokat a számítógépen tárolják.
Következtetés
A várólista egy lista adatstruktúra, amely egyenként vagy kétszeresen összekapcsolt lista. Általános szabály, hogy az első elem, amely belép a listába, az első elem, amely kijön. A C ++ egy sor adatstruktúrát biztosít a szokásos könyvtárában. Az ehhez a struktúrához rendelkezésre álló tagfunkciók és operátorok kategóriái: a várólista felépítése, a sorelem-hozzáférés, a sorkapacitás, a sormódosítók és a sorban túlterhelt operátorok.
Bármely várólista adatstruktúrának biztosítania kell legalább a push () és a pop () tag funkciókat. a push () azt jelenti, hogy egy új elemet küld a sor hátuljába; a pop () pedig a sor elején található elem eltávolítását jelenti. Sajnos a C ++ nyelven ezek a függvények nem adják vissza a kitolt vagy felbukkanó értéket. Tehát az utolsó elem ismerete a tolás előtt az extra back () függvényt kell használni; és az első elem ismerete a pattanás előtt az extra front () függvényt kell használni.
Az érték egy adattípusra vonatkozik, mint a példányosított objektum egy osztályra. Tehát egy adott osztály használható adattípusként a várólista sablon példányosításához. Az osztály különböző objektumai olyanok lesznek, mint az osztály különböző értékei.
A sorban vannak alkalmazások a számítógépen. Használható például egy alkalmazás alkalmazásfájljainak kezelésére, ha a fájlokat a számítógépen tárolják.
Chrys