Jedna od vrsta struktura podataka koja se danas široko koristi u aplikacijskom programiranju je stog. Njegova je osobitost princip organiziranja elemenata, u kojem je njihovo dodavanje i uklanjanje moguće samo jedan po jedan i samo kroz "vrh", odnosno prema LIFO principu. Ali ponekad je potrebno očistiti cijeli stog odjednom.
Potrebno
- - uređivač teksta ili IDE;
- - prevoditelj s korištenog programskog jezika.
Upute
Korak 1
Koristite metode na objektima stoga koji su posebno dizajnirani za čišćenje stoga. Prisutni su u većini odgovarajućih razreda različitih knjižnica i okvira. Na primjer, klasa. NET Stack ima metodu Clear. Primjer njegove primjene na C # mogao bi izgledati ovako:
Stog oStack = novi stog (); // stvoriti objekt stog
oStack. Push ("000"); // ispuniti stog
oStack. Push ("111");
oStack. Clear (); // očistiti stog
Korak 2
Za čišćenje se mogu koristiti i metode za promjenu broja elemenata klasa spremnika, na kojima se često gradi funkcionalnost klasa stogova. Samo trebate smanjiti trenutni broj elemenata na nulu. Na primjer, klasa Qt predloška QStack nasljeđuje od klase predloška QVector koja ima metodu promjene veličine. Primjer njegove upotrebe mogao bi biti ovakav:
QStack oStack; // deklaracija stack objekta
za (int i = 0; i <10; i ++) oStack.push (i); // ispuniti stog
oStack.resize (0); // očistiti stog
3. korak
Čišćenje složenog objekta obično se može obaviti putem operatora dodjele, što se često implementira u odgovarajuće klase. Da bi se to učinilo, objektu steka koji se briše mora se dodijeliti privremeni objekt stvoren zadanim konstruktorom. Na primjer, predložena klasa steka standardne knjižnice C ++, koja je adapter za klase s predloškom spremnika, nema metode za proizvoljnu promjenu broja ili uklanjanje svih elemenata. Možete to očistiti ovako:
std:: stack <int, std:: list> oStack; // deklaracija stack objekta
za (int i = 0; i <10; i ++) oStack.push (i); // ispuniti stog
oStack = std:: stog
4. korak
Očistite objekt steka pozivanjem konstruktora kopiranja pomoću novog operatora s argumentom objekta kreiranim zadanim konstruktorom:
std:: stack <int, std:: list> oStack; // deklaracija stack objekta
za (int i = 0; i <10; i ++) oStack.push (i); // ispuniti stog
novi std:: stog
Korak 5
Stog se može očistiti sekvencijalnim dohvaćanjem svih elemenata pomoću odgovarajućih metoda:
std:: stack <int, std:: list> oStack; // deklaracija stack objekta
za (int i = 0; i <10; i ++) oStack.push (i); // ispuniti stog
while (! oStack.empty ()) oStack.pop (); // očistiti stog
Međutim, ovaj pristup ima vremensku složenost koja linearno ovisi o broju elemenata u stogu. Stoga njegova uporaba nije racionalna.