En av de typer av datastrukturer som ofta används idag i applikationsprogrammering är stacken. Dess särdrag är principen för att organisera element, där deras tillägg och borttagning är möjlig bara en i taget och endast genom "toppen", det vill säga enligt LIFO-principen. Men ibland är det nödvändigt att rensa hela stacken på en gång.
Nödvändig
- - textredigerare eller IDE;
- - en översättare från det använda programmeringsspråket.
Instruktioner
Steg 1
Använd metoder på stackobjekten som är särskilt utformade för att rensa upp stacken. De finns i de flesta motsvarande klasser i olika bibliotek och ramar. Till exempel har. NET Stack-klassen en Clear-metod. Ett exempel på dess tillämpning i C # kan se ut så här:
Stack oStack = ny Stack (); // skapa ett stackobjekt
oStack. Push ("000"); // fyll stapeln
oStack. Push ("111");
oStack. Clear (); // rensa stacken
Steg 2
Metoder för att ändra antalet element i behållarklasser, på vilka stapelklassernas funktionalitet ofta bygger, kan också användas för rengöring. Du behöver bara minska det nuvarande antalet element till noll. Exempelvis ärver Qt-mallklassen QStack från QVector-mallklassen, som har en storleksmetod. Ett exempel på dess användning kan vara så här:
QStack oStack; // deklaration av stackobjektet
för (int i = 0; i <10; i ++) oStack.push (i); // fyll stapeln
oStack.resize (0); // rensa stacken
Steg 3
Rengöring av ett stackobjekt kan vanligtvis göras via uppdragsoperatören, som ofta implementeras i motsvarande klasser. För att göra detta måste objektet för stacken som ska rensas tilldelas ett tillfälligt objekt som skapats av standardkonstruktören. C ++ - standardbibliotekets stapelmallklass, som är en adapter för behållarmallklasser, har till exempel inte metoder för att godtyckligt ändra numret eller ta bort alla element. Du kan rensa det så här:
std:: stack <int, std:: list> oStack; // deklaration av stackobjektet
för (int i = 0; i <10; i ++) oStack.push (i); // fyll stapeln
oStack = std:: stack
Steg 4
Rensa stackobjektet genom att ringa kopikonstruktören med den nya operatören med ett objektargument som skapats av standardkonstruktören:
std:: stack <int, std:: list> oStack; // deklaration av stackobjektet
för (int i = 0; i <10; i ++) oStack.push (i); // fyll stapeln
ny std:: stack
Steg 5
Stapeln kan rensas genom att sekventiellt hämta alla element med lämpliga metoder:
std:: stack <int, std:: list> oStack; // deklaration av stackobjektet
för (int i = 0; i <10; i ++) oStack.push (i); // fyll stapeln
medan (! oStack.empty ()) oStack.pop (); // rensa stacken
Detta tillvägagångssätt har dock en tidskomplexitet som linjärt beror på antalet element i stacken. Därför är dess användning inte rationell.