PTA: Warteschlangenimplementierung und grundlegende Operationen

Implementierung und grundlegende Operationen von Warteschlangen

Thema

Angesichts einer anfänglich leeren Warteschlange und einer Reihe von Ein- und Ausreihungsvorgängen schreiben Sie bitte ein Programm, um die jeweils aus der Warteschlange entfernten Elemente auszugeben. Die Elementwerte der Warteschlange sind alle ganze Zahlen.

Eingabeformat

Die erste Eingabezeile enthält eine positive Ganzzahl n, die die Anzahl der Operationen angibt. In den nächsten n Zeilen stellt jede Zeile eine Operation dar und das Format ist 1 d oder 0. 1 d bedeutet, dass die Ganzzahl d zur Warteschlange hinzugefügt wird, und 0 bedeutet, es aus der Warteschlange zu nehmen. n überschreitet nicht 20.000.

Ausgabeformat

Geben Sie jedes aus der Warteschlange entfernte Element der Reihe nach aus, eine Zeile für jedes Element. Wenn ein Vorgang zum Entfernen aus der Warteschlange unzulässig ist (z. B. das Entfernen aus der Warteschlange, wenn die Warteschlange leer ist), wird für den Vorgang ungültig ausgegeben.

Eingabebeispiel

7
1 1
1 2
0
0 0 1 3
0

Ausgabebeispiel

1
2
ungültig
3

Ideen

Führen Sie je nach Art der Eingabeoperation (1 bedeutet Eintritt in die Warteschlange, 0 bedeutet Entnahme aus der Warteschlange) die entsprechende Operation aus und geben Sie das Element jedes Mal aus, wenn es aus der Warteschlange entfernt wird, oder „ungültig“.

  1. Lesen Sie eine positive Ganzzahl n, die die Gesamtzahl der Operationen darstellt, und erstellen Sie eine Ganzzahlwarteschlange (Warteschlange q), um eine Warteschlange zu simulieren.

  2. Verarbeiten Sie jede Operation iterativ mit einer Schleife. Bei jeder Iteration wird ein ganzzahliges Flag gelesen, umdie Art der Operation zu bestimmen.

  3. Wenn das Flag == 1 ist, bedeutet dies, dass der Enqueue-Vorgang ausgeführt werden soll. Zu diesem Zeitpunkt wird ein ganzzahliger tmp gelesen und in die Warteschlange gestellt.

  4. Wenn Flag == 0, bedeutet dies, dass ein Vorgang zum Entfernen aus der Warteschlange durchgeführt werden soll. Überprüfen Sie zunächst, ob die Warteschlange leer ist. Wenn sie leer ist, wird „ungültig“ ausgegeben, was darauf hinweist, dass sie nicht aus der Warteschlange entfernt werden kann. Wenn die Warteschlange nicht leer ist, wird das vordere Element der Warteschlange ausgegeben und dieses Element dann aus der Warteschlange entfernt

  5. Nach Abschluss der Schleife ist das Ausgabeergebnis das Element, das jedes Mal aus der Warteschlange entfernt wird oder „ungültig“ ist, und jedes Ausgabeergebnis steht in einer Zeile.

Zu beachtende Punkte:

Vor dem Entnahmevorgang prüft der Code, ob die Warteschlange leer ist, um illegale Entnahmevorgänge zu vermeiden.

Der Code verwendet continue, um die Ausgabe nach dem ungültigen Vorgang zum Entfernen aus der Warteschlange zu überspringen und mit der nächsten Schleife fortzufahren.

Code

#include<iostream>
#include<queue>
using namespace std;
int main()
{
    
    
    int n;
    cin>>n;
    queue<int> q;
    int flag;
    for(int i =0 ;i<n;i++)
    {
    
    
        cin>>flag;
        if(flag == 1)
        {
    
    
            int tmp = 0;
            cin>>tmp;
            q.push(tmp);
        }
        else if(flag == 0)
        {
    
    
            if(q.empty())
            {
    
    
                cout<<"invalid"<<endl;
                continue;
            }
            cout<<q.front()<<endl;
            q.pop();
        }
    }
    return 0;
}

Ich denke du magst

Origin blog.csdn.net/m0_74195626/article/details/133849879
Empfohlen
Rangfolge