Yksi tietorakenteista, joita käytetään nykyään laajalti sovellusten ohjelmoinnissa, on pino. Sen erikoisuus on elementtien järjestämisen periaate, jossa niiden lisääminen ja poistaminen on mahdollista vain yksi kerrallaan ja vain "yläosan" kautta, toisin sanoen LIFO-periaatteen mukaisesti. Mutta joskus on tarpeen tyhjentää koko pino kerralla.
Tarpeellinen
- - tekstieditori tai IDE;
- - kääntäjä käytetystä ohjelmointikielestä.
Ohjeet
Vaihe 1
Käytä pinon kohteissa menetelmiä, jotka on erityisesti suunniteltu siivottamaan pino. Ne ovat läsnä useimmissa vastaavissa luokissa eri kirjastoissa ja kehyksissä. Esimerkiksi. NET Stack -luokalla on Clear-menetelmä. Esimerkki sen sovelluksesta C #: ssa saattaa näyttää tältä:
Pino oStack = uusi pino (); // luo pino-objekti
oStack. Push ("000"); // täytä pino
oStack. Push ("111");
oPino. Selvä (); // tyhjennä pino
Vaihe 2
Puhdistuksessa voidaan käyttää myös menetelmiä säiliöluokkien elementtien lukumäärän muuttamiseksi, joille pinoluokkien toiminnallisuus usein rakentuu. Sinun tarvitsee vain vähentää nykyinen elementtien lukumäärä nollaan. Esimerkiksi Qt-malliluokka QStack perii QVector-malliluokan, jolla on kokomenetelmä. Esimerkki sen käytöstä voi olla seuraava:
QStack oStack; // pino-objektin ilmoitus
for (int i = 0; i <10; i ++) oStack.push (i); // täytä pino
oPino.koko (0); // tyhjennä pino
Vaihe 3
Pino-objektin puhdistaminen voidaan yleensä suorittaa määritysoperaattorin kautta, joka usein toteutetaan vastaavissa luokissa. Tätä varten tyhjennettävän pinon objektille on määritettävä oletusrakentajan luoma väliaikainen objekti. Esimerkiksi C ++ - standardikirjaston pino malliluokalla, joka on sovitin konttipohjamalliluokille, ei ole menetelmiä numeron mielivaltaiseen muuttamiseen tai kaikkien elementtien poistamiseen. Voit tyhjentää sen näin:
vakio:: pino <int, vakio:: luettelo> oPino; // pino-objektin ilmoitus
for (int i = 0; i <10; i ++) oStack.push (i); // täytä pino
oPino = vakio:: pino
Vaihe 4
Tyhjennä pinoobjekti kutsumalla kopionrakentajaa uudella operaattorilla oletusrakentajan luomalla objekti-argumentilla:
vakio:: pino <int, vakio:: luettelo> oPino; // pino-objektin ilmoitus
for (int i = 0; i <10; i ++) oStack.push (i); // täytä pino
uusi vakio:: pino
Vaihe 5
Pino voidaan tyhjentää hakemalla kaikki elementit peräkkäin sopivilla menetelmillä:
vakio:: pino <int, vakio:: luettelo> oPino; // pino-objektin ilmoitus
for (int i = 0; i <10; i ++) oStack.push (i); // täytä pino
while (! oStack.empty ()) oStack.pop (); // tyhjennä pino
Tällä lähestymistavalla on kuitenkin ajan monimutkaisuus, joka riippuu lineaarisesti pinon elementtien lukumäärästä. Siksi sen käyttö ei ole järkevää.