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.
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
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
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.