En af de typer datastrukturer, der er meget udbredt i dag i applikationsprogrammering, er stakken. Dens særegenhed er princippet om at organisere elementer, hvor deres tilføjelse og fjernelse kun er mulig én ad gangen og kun gennem "toppen", det vil sige ifølge LIFO-princippet. Men nogle gange er det nødvendigt at rydde hele stakken på én gang.
Nødvendig
- - teksteditor eller IDE;
- - en oversætter fra det anvendte programmeringssprog.
Instruktioner
Trin 1
Brug metoder på stakobjekterne, der er specielt designet til at rydde op i stakken. De er til stede i de fleste af de tilsvarende klasser i forskellige biblioteker og rammer. For eksempel har. NET Stack-klassen en Clear-metode. Et eksempel på dets anvendelse i C # kan se sådan ud:
Stak oStack = ny stak (); // opret et stakobjekt
oStack. Push ("000"); // fyld stakken
oStack. Push ("111");
oStack. Clear (); // ryd stakken
Trin 2
Metoder til at ændre antallet af elementer i beholderklasser, som funktionaliteten af stakklasser ofte er bygget på, kan også bruges til rengøring. Du skal bare reducere det aktuelle antal elementer til nul. F.eks. Arver Qt-skabelonklassen QStack fra QVector-skabelonklassen, som har en størrelsesmetode. Et eksempel på dets anvendelse kan være sådan:
QStack oStack; // erklæring af stakobjektet
for (int i = 0; i <10; i ++) oStack.push (i); // fyld stakken
oStack.resize (0); // ryd stakken
Trin 3
Oprydning af et stakobjekt kan normalt ske gennem tildelingsoperatøren, som ofte implementeres i de tilsvarende klasser. For at gøre dette skal objektet til stakken, der skal ryddes, tildeles et midlertidigt objekt oprettet af standardkonstruktøren. For eksempel har C ++ Standard Library-skabelonklassen, som er en adapter til containerskabelonklasser, ikke metoder til vilkårlig ændring af nummeret eller fjernelse af alle elementer. Du kan rydde det således:
std:: stack <int, std:: list> oStack; // erklæring af stakobjektet
for (int i = 0; i <10; i ++) oStack.push (i); // fyld stakken
oStack = std:: stack
Trin 4
Ryd stakobjektet ved at ringe til kopikonstruktøren ved hjælp af den nye operator med et objektargument oprettet af standardkonstruktøren:
std:: stack <int, std:: list> oStack; // erklæring af stakobjektet
for (int i = 0; i <10; i ++) oStack.push (i); // fyld stakken
ny std:: stak
Trin 5
Stakken kan ryddes ved sekventielt at hente alle elementer ved hjælp af de relevante metoder:
std:: stack <int, std:: list> oStack; // erklæring af stakobjektet
for (int i = 0; i <10; i ++) oStack.push (i); // fyld stakken
mens (! oStack.empty ()) oStack.pop (); // ryd stakken
Denne tilgang har imidlertid en tidskompleksitet, der afhænger lineært af antallet af elementer i stakken. Derfor er dens anvendelse ikke rationel.