Kaip Išvalyti Kaminą

Turinys:

Kaip Išvalyti Kaminą
Kaip Išvalyti Kaminą

Video: Kaip Išvalyti Kaminą

Video: Kaip Išvalyti Kaminą
Video: Kaminų valymas! Mes galime pasiūlyti kaminų valymą. 2024, Lapkritis
Anonim

Vienas iš duomenų struktūrų, plačiai naudojamų šiandien programuojant programas, yra krūva. Jo ypatumas yra elementų organizavimo principas, kai juos pridėti ir pašalinti galima tik po vieną ir tik per „viršų“, tai yra pagal LIFO principą. Tačiau kartais reikia išvalyti visą kaminą vienu metu.

Kaip išvalyti kaminą
Kaip išvalyti kaminą

Būtinas

  • - teksto redaktorius arba IDE;
  • - vertėjas iš vartojamos programavimo kalbos.

Nurodymai

1 žingsnis

Naudokite kamino objektų metodus, specialiai sukurtus kamino valymui. Jų yra daugumoje atitinkamų įvairių bibliotekų ir sistemų klasių. Pvz.,. NET Stack klasėje yra aiškus metodas. Jo taikymo C # pavyzdys gali atrodyti taip:

Stack oStack = new Stack (); // sukurti kamino objektą

o „Stack. Push“(„000“); // užpildykite kaminą

o „Stack. Push“(„111“);

o „Stack. Clear“(); // išvalyti kaminą

2 žingsnis

Valymui taip pat gali būti naudojami konteinerių klasių elementų skaičiaus keitimo metodai, kuriais dažnai remiasi kamino klasių funkcionalumas. Jums tiesiog reikia sumažinti dabartinį elementų skaičių iki nulio. Pvz., „Qt“šablonų klasė „QStack“paveldi iš „QVector“šablonų klasės, kurios metodas yra dydžio keitimo būdas. Jo naudojimo pavyzdys galėtų būti toks:

„QStack oStack“; // kamino objekto deklaracija

už (int i = 0; i <10; i ++) oStack.push (i); // užpildykite kaminą

o „Stack.resize“(0); // išvalyti kaminą

3 žingsnis

Išvalyti kamino objektą paprastai galima per priskyrimo operatorių, kuris dažnai įgyvendinamas atitinkamose klasėse. Norėdami tai padaryti, išvalomo kamino objektui turi būti priskirtas laikinasis objektas, kurį sukūrė numatytasis konstruktorius. Pvz., C ++ Standard Library kamino šablonų klasėje, kuri yra konteinerių šabloninių klasių adapteris, nėra metodų, kaip savavališkai pakeisti numerį arba pašalinti visus elementus. Galite tai išvalyti taip:

std:: stack <int, std:: list> oStack; // kamino objekto deklaracija

už (int i = 0; i <10; i ++) oStack.push (i); // užpildykite kaminą

oStack = std:: stack(); // išvalyti kamin

4 žingsnis

Išvalykite kamino objektą iškviesdami kopijos konstruktorių naudodami naują operatorių su objekto argumentu, kurį sukūrė numatytasis konstruktorius:

std:: stack <int, std:: list> oStack; // kamino objekto deklaracija

už (int i = 0; i <10; i ++) oStack.push (i); // užpildykite kaminą

naujas standartas:: kaminas(oStack); // išvalyti kamin

5 žingsnis

Šūsnį galima išvalyti nuosekliai gaunant visus elementus, naudojant tinkamus metodus:

std:: stack <int, std:: list> oStack; // kamino objekto deklaracija

už (int i = 0; i <10; i ++) oStack.push (i); // užpildykite kaminą

o (! oStack.empty ()) oStack.pop (); // išvalykite kaminą

Tačiau šis metodas turi laiko sudėtingumą, kuris tiesiškai priklauso nuo elementų skaičiaus kamino. Todėl jo naudojimas nėra racionalus.

Rekomenduojamas: