Einer der heute in der Anwendungsprogrammierung weit verbreiteten Typen von Datenstrukturen ist der Stack. Seine Besonderheit ist das Prinzip der Organisation von Elementen, bei dem deren Hinzufügen und Entfernen nur einzeln und nur durch die "Oberseite", dh nach dem LIFO-Prinzip, möglich ist. Manchmal ist es jedoch notwendig, den gesamten Stapel auf einmal zu löschen.

Notwendig
- - Texteditor oder IDE;
- - ein Übersetzer aus der verwendeten Programmiersprache.
Anweisungen
Schritt 1
Verwenden Sie Methoden für die Stapelobjekte, die speziell zum Bereinigen des Stapels entwickelt wurden. Sie sind in den meisten entsprechenden Klassen verschiedener Bibliotheken und Frameworks vorhanden. Die. NET Stack-Klasse verfügt beispielsweise über eine Clear-Methode. Ein Beispiel für seine Anwendung in C # könnte so aussehen:
Stack oStack = neuer Stack (); // ein Stack-Objekt erstellen
oStack. Push ("000"); // Fülle den Stapel
oStack. Push ("111");
oStack. Clear (); // den Stapel leeren
Schritt 2
Auch Methoden zum Ändern der Anzahl von Elementen von Containerklassen, auf denen die Funktionalität von Stackklassen oft aufgebaut ist, können zur Reinigung verwendet werden. Sie müssen nur die aktuelle Anzahl der Elemente auf Null reduzieren. Beispielsweise erbt die Qt-Vorlagenklasse QStack von der QVector-Vorlagenklasse, die über eine Größenänderungsmethode verfügt. Ein Beispiel für seine Verwendung könnte so aussehen:
QStack oStack; // Deklaration des Stack-Objekts
for (int i = 0; i < 10; i ++) oStack.push (i); // Fülle den Stapel
oStack.resize (0); // den Stapel leeren
Schritt 3
Das Aufräumen eines Stack-Objekts kann normalerweise über den Zuweisungsoperator erfolgen, der oft in den entsprechenden Klassen implementiert ist. Dazu muss dem zu löschenden Objekt des Stack ein vom Default-Konstruktor erzeugtes temporäres Objekt zugewiesen werden. Beispielsweise verfügt die Stack-Template-Klasse der C++-Standardbibliothek, die ein Adapter für Container-Template-Klassen ist, nicht über Methoden, um die Anzahl willkürlich zu ändern oder alle Elemente zu entfernen. Sie können es so löschen:
std:: stack <int, std:: list> oStack; // Deklaration des Stack-Objekts
for (int i = 0; i < 10; i ++) oStack.push (i); // Fülle den Stapel
oStack = std:: Stapel
Schritt 4
Löschen Sie das Stapelobjekt, indem Sie den Kopierkonstruktor mit dem new-Operator mit einem vom Standardkonstruktor erstellten Objektargument aufrufen:
std:: stack <int, std:: list> oStack; // Deklaration des Stack-Objekts
for (int i = 0; i < 10; i ++) oStack.push (i); // Fülle den Stapel
neuer std:: Stapel
Schritt 5
Der Stapel kann gelöscht werden, indem alle Elemente nacheinander mit den entsprechenden Methoden abgerufen werden:
std:: stack <int, std:: list> oStack; // Deklaration des Stack-Objekts
for (int i = 0; i < 10; i ++) oStack.push (i); // Fülle den Stapel
while (! oStack.empty ()) oStack.pop (); // Stapel leeren
Dieser Ansatz hat jedoch eine zeitliche Komplexität, die linear von der Anzahl der Elemente im Stapel abhängt. Daher ist seine Verwendung nicht rational.