Ang isa sa mga uri ng mga istraktura ng data na malawakang ginagamit ngayon sa aplikasyon ng aplikasyon ay ang stack. Ang pagiging kakaiba nito ay ang prinsipyo ng pag-aayos ng mga elemento, kung saan ang kanilang pagdaragdag at pagtanggal ay posible na isa-isa lamang at sa pamamagitan lamang ng "tuktok", iyon ay, ayon sa prinsipyo ng LIFO. Ngunit kung minsan kinakailangan upang limasin ang buong stack nang sabay-sabay.
Kailangan
- - text editor o IDE;
- - isang tagasalin mula sa ginamit na wika ng programa.
Panuto
Hakbang 1
Gumamit ng mga pamamaraan sa mga stack na bagay na partikular na idinisenyo upang linisin ang stack. Naroroon sila sa karamihan ng mga kaukulang klase ng iba't ibang mga silid-aklatan at balangkas. Halimbawa, ang klase ng. NET Stack ay may isang Malinaw na pamamaraan. Ang isang halimbawa ng aplikasyon nito sa C # ay maaaring magmukhang ganito:
Stack oStack = bagong Stack (); // lumikha ng isang stack object
oStack. Push ("000"); // punan ang stack
oStack. Push ("111");
oStack. Clear (); // limasin ang stack
Hakbang 2
Ang mga pamamaraan para sa pagbabago ng bilang ng mga elemento ng mga klase ng lalagyan, kung saan ang pagpapaandar ng mga klase ng stack ay madalas na binuo, ay maaari ding gamitin para sa paglilinis. Kailangan mo lamang bawasan ang kasalukuyang bilang ng mga elemento sa zero. Halimbawa, ang Qt template class na QStack ay nagmamana mula sa klase ng template ng QVector, na may isang paraan ng pagbabago ng laki. Ang isang halimbawa ng paggamit nito ay maaaring maging ganito:
QStack oStack; // pagdedeklara ng stack object
para sa (int i = 0; i <10; i ++) oStack.push (i); // punan ang stack
oStack.resize (0); // limasin ang stack
Hakbang 3
Ang paglilinis ng isang stack na bagay ay maaaring gawin sa pamamagitan ng operator ng pagtatalaga, na madalas na ipinatupad sa mga kaukulang klase. Upang gawin ito, ang object ng stack na tatanggalin ay dapat na italaga ng isang pansamantalang bagay na nilikha ng default na tagapagbuo. Halimbawa, ang C ++ Standard Library stack na nakalimbag na klase, na isang adapter para sa mga naka-templong klase ng container, ay walang mga pamamaraan para sa arbitraryong pagbabago ng numero o pag-aalis ng lahat ng mga elemento. Maaari mong linisin ito tulad nito:
std:: stack <int, std:: list> oStack; // pagdedeklara ng stack object
para sa (int i = 0; i <10; i ++) oStack.push (i); // punan ang stack
oStack = std:: stack
Hakbang 4
I-clear ang stack object sa pamamagitan ng pagtawag sa copy konstruktor gamit ang bagong operator gamit ang isang object argument na nilikha ng default konstruktor:
std:: stack <int, std:: list> oStack; // pagdedeklara ng stack object
para sa (int i = 0; i <10; i ++) oStack.push (i); // punan ang stack
bagong std:: stack
Hakbang 5
Maaaring i-clear ang stack sa pamamagitan ng sunud-sunod na pagkuha ng lahat ng mga elemento gamit ang naaangkop na mga pamamaraan:
std:: stack <int, std:: list> oStack; // pagdedeklara ng stack object
para sa (int i = 0; i <10; i ++) oStack.push (i); // punan ang stack
habang (! oStack.empty ()) oStack.pop (); // limasin ang stack
Gayunpaman, ang pamamaraang ito ay may pagiging kumplikado ng oras na linearly nakasalalay sa bilang ng mga elemento sa stack. Samakatuwid, ang paggamit nito ay hindi makatuwiran.