Nachdem das erste Element der ursprünglichen Liste entfernt wurde, wird das zweite zum ersten Element. Nachdem der zweite Artikel entfernt wurde, wird der dritte zum ersten Element und so weiter.
Ein gutes Beispiel für eine Warteschlange ist, wenn sich die Leute auf dem Laufenden machen, um auf Service zu warten oder gut. Die erste Person wird zuerst vor dem letzten bedient. Die Warteschlange, über die in diesem Tutorial gesprochen wurde, ist jedoch die Software -Warteschlange, die in C entworfen wurde++.
FIFO
FIFO steht für First-In, First-Out. Es ist eine andere Möglichkeit, die Warteschlange zu schätzen. Dies bedeutet, dass das erste Element, das die Liste eingibt. Der Beginn der Liste heißt Kopf oder Front; Das Ende der Liste wird der Rücken oder der Schwanz bezeichnet.
Wesentliche Operationen
Eine Software -Warteschlange muss mindestens die folgenden Vorgänge haben:
drücken
Diese Operation fügt ein neues Element auf der Rückseite der Warteschlange hinzu. Diese Operation wird offiziell genannt, Enqueue.
Schicht
Diese Operation beseitigt das erste Element der Warteschlange, und das zweite Element wird zum neuen ersten Element. Diese Operation wird offiziell dequeue bezeichnet. Es heißt Pop in C++.
In diesem Artikel wird erläutert, wie die C ++ - Warteschlangendatenstruktur verwendet wird. Sie sollten C ++ - Hinweise und Referenzen kennen, um den Rest dieses Artikels zu verstehen.
Klasse und Objekte
Eine Klasse ist eine Reihe von Variablen und Funktionen, die zusammenarbeiten, wobei die Variablen keine Werte zugewiesen sind. Wenn der Variablen Werte zugewiesen werden, wird die Klasse zu einem Objekt. Verschiedene Werte, die derselben Klasse angegeben werden, führen zu verschiedenen Objekten. Das heißt, verschiedene Objekte sind dieselbe Klasse mit unterschiedlichen Werten. Das Erstellen eines Objekts aus einer Klasse soll das Objekt instanziieren.
Der Name, Warteschlange ist eine Klasse. Ein aus der Warteschlangenklasse erstellter Objekt enthält einen Programmierer -Namensnamen.
Eine Funktion, die zu einer Klasse gehört, ist erforderlich, um ein Objekt aus der Klasse zu instanziieren. In C ++ hat diese Funktion den gleichen Namen wie der Name der Klasse. Objekte, die aus der Klasse erstellt (instanziiert) wurden, haben vom Programmierer unterschiedliche Namen gegeben.
Das Erstellen eines Objekts aus der Klasse bedeutet, das Objekt zu konstruieren. Es bedeutet auch Instanziation.
Ein C ++ - Programm, das die Warteschlangenklasse verwendet, beginnt mit den folgenden Zeilen oben in der Datei:
#enthalten
#enthalten
Verwenden von Namespace STD;
Die erste Zeile gilt für Eingabe/Ausgabe. Die zweite Zeile besteht darin, dass das Programm alle Funktionen der Warteschlangenklasse verwenden kann. Mit der dritten Zeile kann das Programm die Namen im Standard -Namespace verwenden.
Überladen einer Funktion
Wenn zwei oder mehr verschiedene Funktionssignaturen denselben Namen haben, soll dieser Name überlastet werden. Wenn eine Funktion aufgerufen wird, bestimmen Sie die Anzahl und die Art von Argumenten, welche Funktion tatsächlich ausgeführt wird.
Konstruktion
WarteschlangeName()
Die folgende Deklaration instanziiert eine Warteschlange mit dem Namen, Que of Type Int.
WarteschlangeQue;
Die Warteschlange ist leer. Die Erklärung beginnt mit dem reservierten Wort, der Warteschlange, gefolgt von Winkelklammern mit dem Datentyp. Dann haben Sie den Namen des Programmierers für die Warteschlange.
Konstruktion mit Initialisiererliste
Die folgende Definition zeigt, wie Sie eine Warteschlange mit Initialisiererliste erstellen:
Warteschlangeque (1.1, 2.2, 3.3, 4.4);
Zerstörung einer Warteschlange
Um eine Warteschlange zu zerstören, lassen Sie sie einfach aus dem Zielfernrohr gehen.
Warteschlangenelementzugriff
Push (Wert)
Eine Warteschlange ist eine Erst-in-First-Out-Liste. So wird jeder Wert von hinten hinzugefügt. Das folgende Codesegment erstellt eine leere Warteschlange, nach der fünf Float -Werte von hinten hinzugefügt werden:
WarteschlangeQue;
Que.Push (1.1);
Que.Push (2.2);
Que.Push (3.3);
Que.Push (4.4);
Que.Push (5.5);
size () const
Dies gibt die Anzahl der Elemente in der Warteschlange zurück. Der folgende Code zeigt:
WarteschlangeQue;
Que.Push (1.1); Que.Push (2.2); Que.Push (3.3); Que.Push (4.4); Que.Push (5.5);
Cout << que.size() << '\n';
Der Ausgang ist 5.
Vorderseite()
Dies gibt einen Verweis auf das erste Element der Warteschlange zurück, ohne das Element zu entfernen. Die Ausgabe des folgenden Codes beträgt 1.1.
WarteschlangeQue;
Que.Push (1.1); Que.Push (2.2); Que.Push (3.3); Que.Push (4.4); Que.Push (5.5);
Cout << que.front() << '\n';
Das Element wird nicht aus der Warteschlange entfernt.
Front () const
Wenn der Warteschlangenkonstruktion von const vorgegangen ist, wird dem Ausdruck „Front () const“ anstelle von „Front ()“ ausgeführt. Es wird zum Beispiel im folgenden Code verwendet.
Const Queueque (1.1, 2.2, 3.3, 4.4, 5.5);
Cout << que.front() << '\n';
Eine konstante Referenz wird zurückgegeben. Das Element wird nicht vom Vektor entfernt. Die Warteschlangenelemente können nicht geändert werden.
zurück()
Dies gibt einen Verweis auf das letzte Element der Warteschlange zurück, ohne das Element zu entfernen. Die Ausgabe des folgenden Codes beträgt 5.5.
WarteschlangeQue;
Que.Push (1.1); Que.Push (2.2); Que.Push (3.3); Que.Push (4.4); Que.Push (5.5);
Cout << que.back() << '\n';
back () const
Wenn der Warteschlangenkonstruktion von const vorgegangen ist, wird der Ausdruck „Back () const“ anstelle von „zurück () ausgeführt“. Es wird zum Beispiel im folgenden Code verwendet.
Const Queueque (1.1, 2.2, 3.3, 4.4, 5.5);
Cout << que.back() << '\n';
Eine konstante Referenz wird zurückgegeben. Das Element wird nicht aus der Warteschlange entfernt. Mit der vorhergehenden Konstruktion für die Warteschlangenkonstruktion können die Elemente in der Warteschlange nicht geändert werden.
Warteschlangenkapazität
size () const
- siehe oben
leer () const
Dies gibt 1 für wahr zurück, wenn es keine Elemente in der Warteschlange oder 0 für False gibt, wenn die Warteschlange leer ist. Der folgende Code zeigt dies:
WarteschlangeQue1 (1.1, 2.2, 3.3, 4.4, 5.5);
Cout << que1.empty() << '\n';
Warteschlangeque2;
Cout << que2.empty() << '\n';
Die Ausgabe ist:
0Warteschlangenmodifikatoren
Pop()
Eine Warteschlange ist FIFO, daher muss jedes Element, das entfernt werden muss, von oben (Kopf) der Warteschlange entfernt werden. Diese Mitgliedsfunktion entfernt das erste Element, ohne es zurückzugeben. Der folgende Code zeigt dies:
Warteschlangeque (1.1, 2.2, 3.3, 4.4, 5.5);
Cout << que.front() << '\n';
Que.Pop();
Cout << que.size() << '\n';
Die Ausgabe ist:
1.1A.Tausch (b)
Zwei Warteschlangen können ausgetauscht werden, wie in diesem Codesegment dargestellt:
WarteschlangeQue1 (1.1, 2.2, 3.3, 4.4, 5.5);
Warteschlangeque2 (10, 20);
Que1.Swap (Que2);
Cout << "First element and size of que1:"
<< que1.front() <<", "<< que1.size() << '\n';
Cout << "First element and size of que2 "<<
Que2.Vorderseite() <<", "<< que2.size() << '\n';
Die Ausgabe ist:
Erstes Element und Größe von Que1: 10, 2
Erstes Element und Größe von Que2: 1.15
Beachten Sie, dass die Länge einer Warteschlange bei Bedarf erhöht wird. Auch Werte, die keinen Ersatz hatten, werden durch einen Standardwert ersetzt. Die Datentypen müssen vom gleichen Typ sein.
Gleichheit und relationale Operatoren für Warteschlangen
Für gewöhnliche Zeichen in C ++ kommen in aufsteigender Reihenfolge Zahlen vor Großbuchstaben, die vor Kleinbuchstaben kommen. Der Raumfigur kommt vor Null und allen.
Gleichstellungsoperatoren
Gibt 1 für True und 0 für false zurück.
Der == Operator
Gibt 1 zurück, wenn die beiden Warteschlangen die gleiche Größe haben und die entsprechenden Elemente gleich sind; ansonsten kehrt es 0 zurück. Beispiel:
WarteschlangeQue1 ("Art", "etwas anderes");
Warteschlangeque2 ("böse");
int num = que1 == que2;
Cout << num << '\n';
Die Ausgabe ist: 0.
Der != Operator
- Gegenteil des oben genannten. Beispiel:
WarteschlangeQue1 ("Art", "etwas anderes");
Warteschlangeque2 ("böse");
int num = que1 != Que2;
Cout << num << '\n';
Die Ausgabe ist: 1.
Relationale Operatoren
Gibt 1 für True und 0 für false zurück.
Der < Operator
Gibt 1 zurück, wenn die erste Warteschlange die anfängliche Teilmenge der zweiten Warteschlange ist, wobei die Elemente der beiden gleichen Teile gleich und in derselben Reihenfolge sind. Wenn beide Warteschlangen gleich groß oder unterschiedliche Größen haben und sich von links nach rechts bewegen, wird in der ersten Warteschlange ein Element aufgetaucht. Ansonsten wird 0 zurückgegeben. Beispiel:
WarteschlangeQue1 ("Art", "etwas anderes");
Warteschlangeque2 ("böse");
int num = que1 < que2;
Cout << num << '\n';
Der Ausgang ist 1. < does not include the case when the size and order are the same.
Der> Operator
- Gegenteil des oben genannten. Beispiel:
WarteschlangeQue1 ("Art", "etwas anderes");
Warteschlangeque2 ("böse");
int num = que1> que2;
Cout << num << '\n';
Ausgabe: 0
Der <= Operator
- gleich wie < but includes the case when the size and order are the same. Example:
WarteschlangeQue1 ("Art", "etwas anderes");
Warteschlangeque2 ("böse");
int num = que1 <= que2;
Cout << num << '\n';
Ausgabe: 1
Der> = Operator
- Gegenteil des oben genannten. Beispiel:
WarteschlangeQue1 ("Art", "etwas anderes");
Warteschlangeque2 ("böse");
int num = que1> = que2;
Cout << num << '\n';
Ausgabe: 0
Klasse und seine instanziierten Objekte
Ein Wert ist für einen Datentyp, da ein instanziiertes Objekt einer Klasse ist. Die Warteschlangenkonstruktion kann auch eine Klasse als Datentyp akzeptieren. Das folgende Programm zeigt dies:
#enthalten
#enthalten
Verwenden von Namespace STD;
Klasse Thecla
öffentlich:
int num;
statischer Char Ch;
void func (char cha, const char *str)
Cout << "There are " << num << " books worth " <<
Cha << str << " in the store." << '\n';
statischer void Fun (char ch)
if (ch == 'a')
Cout << "Official static member function" << '\n';
;
int main ()
Thecla obj1; Thecla obj2; Thecla obj3; Thecla obj4; Thecla obj5;
WarteschlangeQue;
Que.Push (obj1);
Que.Push (obj2);
Que.Push (obj3);
Que.Push (obj4);
Que.Push (obj5);
Cout << que.size() << '\n';
Rückkehr 0;
Der Ausgang ist 5.
Verlinkte Liste
Die Warteschlangenliste wird technisch als verknüpfte Liste bezeichnet. Es gibt zwei Arten von verknüpften Listen für die Warteschlange: einzig verknüpfte Liste und doppelt verknüpfte Liste.
Ein einzig verknüpftes Listenelement kann durch eine Struktur von zwei Mitgliedern implementiert werden. Ein Mitglied hält einen Zeiger auf das nächste Element und das andere Mitglied hat das Datum (Singular für Daten).
Ein doppelt verknüpftes Listenelement kann durch eine Struktur von drei Mitgliedern implementiert werden. Das mittlere Mitglied hält das Datum, während der erste und dritte Mitglieder Hinweise auf ihre angrenzenden Elemente veranstaltet.
Anwendungen der Warteschlange
Die Warteschlange ist eine erste Datenstruktur für Erste. Es gibt Situationen im Rechnen, wenn Daten in Form einer Warteschlange eintreffen, was das erste Verhalten des ersten Mals erfordert.
Computerressourcen teilen
Eine Ressource in einem Computer ist eine physische oder virtuelle Komponente der begrenzten Verfügbarkeit. Dazu gehören die CPU, die Grafikkarte, die Festplatte und der Speicher. Das Teilen einer solchen Ressource erfordert eine Warteschlange.
Umgang mit Interrupts
Computerperipheriegerungen müssen den Computer von Zeit zu Zeit unterbrechen. Die Interrupts müssen genauso behandelt werden, wie sie ankamen. Dies braucht eine Warteschlange.
Informationen verwalten.
Die Warteschlange kann beispielsweise verwendet werden, um Anwendungsdateien für einen Job zu verwalten, wenn die Dateien auf dem Computer gespeichert werden.
Abschluss
Eine Warteschlange ist eine Listendatenstruktur, die entweder eine einzig verknüpfte Liste oder eine doppelt verknüpfte Liste ist. In der Regel ist das erste Element, das in die Liste eingeht, das erste Element, das herauskommt. C ++ bietet eine Warteschlangendatenstruktur in seiner Standardbibliothek. Die Kategorien der für diese Struktur verfügbaren Mitgliederfunktionen und Bediener sind Warteschlangenkonstruktionen, Warteschlangenelementzugriff, Warteschlangenkapazität, Warteschlangenmodifikatoren und überlastete Warteschlangenbetreiber.
Jede Warteschlangendatenstruktur muss zumindest die Funktionen PUSP () und POP () bereitstellen. Push () bedeutet, ein neues Element an der Rückseite der Warteschlange zu senden; und pop () bedeutet, das Element zu entfernen, das sich vor der Warteschlange befindet. Leider geben diese Funktionen in C ++ nicht den Wert zurück, der gedrückt oder geplant ist. Um das letzte Element vor dem Schieben zu kennen, muss die zusätzliche Back () -Funktion verwendet werden. Und um das erste Element vor dem Knallen zu kennen, muss die zusätzliche Front () -Funktion verwendet werden.
Ein Wert ist für einen Datentyp, da ein instanziiertes Objekt einer Klasse ist. Daher kann eine bestimmte Klasse als Datentyp für die Instanziierung der Warteschlangenvorlage verwendet werden. Verschiedene Objekte für die Klasse werden zu unterschiedlichen Werten für die Klasse.
Die Warteschlange verfügt über Anwendungen auf dem Computer. Es kann beispielsweise verwendet werden, um Anwendungsdateien für einen Job zu verwalten, wenn die Dateien auf dem Computer gespeichert werden.