En av typene datastrukturer som er mye brukt i dag i applikasjonsprogrammering, er stakken. Dens særegenhet er prinsippet om å organisere elementer, der deres tilsetning og fjerning bare er mulig en om gangen og bare gjennom "toppen", det vil si i henhold til LIFO-prinsippet. Men noen ganger er det nødvendig å fjerne hele stakken på en gang.
Nødvendig
- - tekstredigerer eller IDE;
- - en oversetter fra det brukte programmeringsspråket.
Bruksanvisning
Trinn 1
Bruk metoder på stabelobjektene som er spesielt designet for å rydde opp bunken. De er til stede i de fleste av de tilsvarende klassene i forskjellige biblioteker og rammer. NET Stack-klassen har for eksempel en Clear-metode. Et eksempel på anvendelse i C # kan se slik ut:
Stack oStack = new Stack (); // opprette et stabelobjekt
oStack. Push ("000"); // fyll bunken
oStack. Push ("111");
oStack. Clear (); // tøm bunken
Steg 2
Metoder for å endre antall elementer i containerklasser, som funksjonaliteten til stackklasser ofte er bygget på, kan også brukes til rengjøring. Du trenger bare å redusere det nåværende antall elementer til null. For eksempel arver Qt-malklassen QStack fra QVector-malklassen, som har en størrelsesmetode. Et eksempel på bruken kan være slik:
QStack oStack; // erklæring av stabelobjektet
for (int i = 0; i <10; i ++) oStack.push (i); // fyll bunken
oStack.resize (0); // tøm bunken
Trinn 3
Opprydding av et stabelobjekt kan vanligvis gjøres gjennom oppdragsoperatøren, som ofte implementeres i de tilsvarende klassene. For å gjøre dette må objektet til stakken som skal ryddes, tildeles et midlertidig objekt opprettet av standardkonstruktøren. For eksempel har C ++ Standard Library-malklassen, som er en adapter for containermalklasser, ikke metoder for å endre nummeret vilkårlig eller fjerne alle elementene. Du kan fjerne det slik:
std:: stack <int, std:: list> oStack; // erklæring av stabelobjektet
for (int i = 0; i <10; i ++) oStack.push (i); // fyll bunken
oStack = std:: stack
Trinn 4
Fjern stabelobjektet ved å ringe kopikonstruktøren ved hjelp av den nye operatøren med et objektargument opprettet av standardkonstruktøren:
std:: stack <int, std:: list> oStack; // erklæring av stabelobjektet
for (int i = 0; i <10; i ++) oStack.push (i); // fyll bunken
ny std:: stack
Trinn 5
Stakken kan ryddes ved å hente alle elementene sekvensielt ved å bruke de riktige metodene:
std:: stack <int, std:: list> oStack; // erklæring av stabelobjektet
for (int i = 0; i <10; i ++) oStack.push (i); // fyll bunken
mens (! oStack.empty ()) oStack.pop (); // tøm bunken
Denne tilnærmingen har imidlertid en tidskompleksitet som avhenger lineært av antall elementer i stabelen. Derfor er bruken ikke rasjonell.