So verwenden Sie C ++ - Warteschlange

So verwenden Sie C ++ - Warteschlange
Eine Warteschlange ist eine Sammlung von Elementen, bei denen das erste in die Liste hinzugefügte Element hinzugefügt wird, das erste Element, das als nächstes entfernt wird. Wenn die Sammlung also Artikel hinzugefügt werden, wächst sie an Größe, ich.e. Es wächst lang. Immer wenn ein Element entfernt werden soll, muss es der erste sein, der hinzugefügt wird. Wenn Elemente kontinuierlich entfernt werden, ist der nächste entfernt der zweite Element. Der dritte wird anschließend entfernt und so weiter.

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

Warteschlange Name()

Die folgende Deklaration instanziiert eine Warteschlange mit dem Namen, Que of Type Int.

Warteschlange Que;

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:

Warteschlange que (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:

Warteschlange Que;
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:

Warteschlange Que;
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.

Warteschlange Que;
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 Queue que (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.

Warteschlange Que;
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 Queue que (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:

Warteschlange Que1 (1.1, 2.2, 3.3, 4.4, 5.5);
Cout << que1.empty() << '\n';
Warteschlange que2;
Cout << que2.empty() << '\n';

Die Ausgabe ist:

0
1

Warteschlangenmodifikatoren

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:

Warteschlange que (1.1, 2.2, 3.3, 4.4, 5.5);
Cout << que.front() << '\n';
Que.Pop();
Cout << que.size() << '\n';

Die Ausgabe ist:

1.1
4

A.Tausch (b)

Zwei Warteschlangen können ausgetauscht werden, wie in diesem Codesegment dargestellt:

Warteschlange Que1 (1.1, 2.2, 3.3, 4.4, 5.5);
Warteschlange que2 (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:

Warteschlange Que1 ("Art", "etwas anderes");
Warteschlange que2 ("böse");
int num = que1 == que2;
Cout << num << '\n';

Die Ausgabe ist: 0.

Der != Operator

- Gegenteil des oben genannten. Beispiel:

Warteschlange Que1 ("Art", "etwas anderes");
Warteschlange que2 ("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:

Warteschlange Que1 ("Art", "etwas anderes");
Warteschlange que2 ("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:

Warteschlange Que1 ("Art", "etwas anderes");
Warteschlange que2 ("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:

Warteschlange Que1 ("Art", "etwas anderes");
Warteschlange que2 ("böse");
int num = que1 <= que2;
Cout << num << '\n';

Ausgabe: 1

Der> = Operator

- Gegenteil des oben genannten. Beispiel:

Warteschlange Que1 ("Art", "etwas anderes");
Warteschlange que2 ("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;
Warteschlange Que;
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.