Jednym z typów struktur danych, które są obecnie szeroko stosowane w programowaniu aplikacji, jest stos. Jego osobliwością jest zasada organizowania elementów, w której ich dodawanie i usuwanie jest możliwe tylko po jednym na raz i tylko przez „górę”, czyli zgodnie z zasadą LIFO. Ale czasami konieczne jest jednoczesne oczyszczenie całego stosu.
Niezbędny
- - edytor tekstu lub IDE;
- - tłumacz z używanego języka programowania.
Instrukcje
Krok 1
Użyj metod na obiektach stosu, które są specjalnie zaprojektowane do czyszczenia stosu. Są obecne w większości odpowiednich klas różnych bibliotek i frameworków. Na przykład klasa stosu. NET ma metodę Clear. Przykład jego zastosowania w C# może wyglądać tak:
Stos oStack = nowy Stos (); // utwórz obiekt stosu
oStack. Push ("000"); // wypełnij stos
oStack. Push ("111");
oStos. Wyczyść (); // wyczyść stos
Krok 2
Do czyszczenia można również wykorzystać metody zmiany liczby elementów klas kontenerów, na których często budowana jest funkcjonalność klas stosów. Wystarczy zredukować obecną liczbę elementów do zera. Na przykład klasa szablonów Qt QStack dziedziczy z klasy szablonów QVector, która ma metodę zmiany rozmiaru. Przykładem jego zastosowania może być tak:
QStack oStack; // deklaracja obiektu stosu
for (int i = 0; i <10; i ++) oStack.push (i); // wypełnij stos
oZmień rozmiar stosu (0); // wyczyść stos
Krok 3
Czyszczenie obiektu stosu można zwykle wykonać za pomocą operatora przypisania, który jest często implementowany w odpowiednich klasach. Aby to zrobić, obiekt stosu, który ma zostać wyczyszczony, musi mieć przypisany obiekt tymczasowy utworzony przez domyślny konstruktor. Na przykład klasa szablonowa stosu C++ Standard Library, która jest adapterem dla klas opartych na szablonach kontenera, nie posiada metod do arbitralnej zmiany liczby lub usuwania wszystkich elementów. Możesz to wyczyścić w ten sposób:
std:: stos <int, std:: lista> oStack; // deklaracja obiektu stosu
for (int i = 0; i <10; i ++) oStack.push (i); // wypełnij stos
oStos = std:: stos
Krok 4
Wyczyść obiekt stosu, wywołując konstruktor kopiujący za pomocą operatora new z argumentem obiektu utworzonym przez domyślny konstruktor:
std:: stos <int, std:: lista> oStack; // deklaracja obiektu stosu
for (int i = 0; i <10; i ++) oStack.push (i); // wypełnij stos
nowy std:: stos
Krok 5
Stos można wyczyścić, sekwencyjnie pobierając wszystkie elementy przy użyciu odpowiednich metod:
std:: stos <int, std:: lista> oStack; // deklaracja obiektu stosu
for (int i = 0; i <10; i ++) oStack.push (i); // wypełnij stos
while (! oStack.empty ()) oStack.pop ();// wyczyść stos
Jednak to podejście ma złożoność czasową, która liniowo zależy od liczby elementów w stosie. Dlatego jego użycie nie jest racjonalne.