Hur Man Rensar Stacken

Innehållsförteckning:

Hur Man Rensar Stacken
Hur Man Rensar Stacken

Video: Hur Man Rensar Stacken

Video: Hur Man Rensar Stacken
Video: BENISLAV - HUR DU TJÄNAR MYKET PENGAR 2024, November
Anonim

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.

Hur man rensar stacken
Hur man rensar stacken

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(); // rensa stacke

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(oStack); // rensa stacke

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.

Rekommenderad: