ßê î÷èñòèòè ñòåê
Îäíèì ç òèï³â ñòðóêòóð äàíèõ, äîñèòü øèðîêî âèêîðèñòîâóâàíèõ ñüîãîäí³ â ïðèêëàäíîìó ïðîãðàìóâàíí³, º ñòåê. Éîãî îñîáëèâ³ñòþ º ïðèíöèï îðãàí³çàö³¿ åëåìåíò³â, ïðè ÿêîìó ¿õ äîäàâàííÿ ³ âèäàëåííÿ ìîæëèâî ò³ëüêè ïî îäíîìó ³ ò³ëüêè ÷åðåç «âåðøèíó», òîáòî çà ïðèíöèïîì LIFO. Àëå ³íîä³ áóâຠíåîáõ³äíî î÷èñòèòè â³äðàçó âåñü ñòåê.
Âàì çíàäîáèòüñÿ
- - òåêñòîâèé ðåäàêòîð àáî IDE;
- - òðàíñëÿòîð ç ìîâè ïðîãðàìóâàííÿ.
²íñòðóêö³ÿ
1
Âèêîðèñòîâóéòå ìåòîäè îá`ºêò³â ñòåêà, ñïåö³àëüíî ïðèçíà÷åí³ äëÿ éîãî î÷èùåííÿ. Âîíè ïðèñóòí³ ó á³ëüøîñò³ â³äïîâ³äíèõ êëàñ³â ð³çíèõ á³áë³îòåê ³ ôðåéìâîðê³â. Íàïðèêëàä, ó êëàñó Stack ïëàòôîðìè .NET º ìåòîä Clear. Ïðèêëàä éîãî çàñòîñóâàííÿ íà ìîâ³ C # ìîæå âèãëÿäàòè òàê:
Stack oStack = new Stack () - // ñòâîðåííÿ îá`ºêòà ñòåêà
oStack.Push ("000") - // Çàïîâíåííÿ ñòåêà
oStack.Push ("111" );
oStack.Clear () - // î÷èùåííÿ ñòåêà
Stack oStack = new Stack () - // ñòâîðåííÿ îá`ºêòà ñòåêà
oStack.Push ("000") - // Çàïîâíåííÿ ñòåêà
oStack.Push ("111" );
oStack.Clear () - // î÷èùåííÿ ñòåêà
2
Ìåòîäè çì³íè ê³ëüêîñò³ åëåìåíò³â êëàñ³â êîíòåéíåð³â, íà ÿêèõ íàé÷àñò³øå áóäóºòüñÿ ôóíêö³îíàë êëàñ³â ñòåê³â, òàêîæ ìîæíà çàñòîñóâàòè äëÿ î÷èùåííÿ. Ïîòð³áíî ïðîñòî çìåíøèòè ïîòî÷íó ê³ëüê³ñòü åëåìåíò³â äî íóëÿ. Òàê, øàáëîííèé êëàñ QStack á³áë³îòåêè Qt óñïàäêîâóºòüñÿ â³ä øàáëîííîãî êëàñó QVector, ÿêèé ìຠìåòîä resize. Ïðèêëàä éîãî âèêîðèñòàííÿ ìîæå áóòè òàêèì:
QStack oStack- // äåêëàðàö³ÿ îá`ºêòà ñòåêà
for (int i = 0 i lt; 10 i ++) oStack.push (i) - // çàïîâíåííÿ ñòåêà
oStack.resize (0) - // î÷èùåííÿ ñòåêà
QStack
for (int i = 0 i lt; 10 i ++) oStack.push (i) - // çàïîâíåííÿ ñòåêà
oStack.resize (0) - // î÷èùåííÿ ñòåêà
3
Î÷èùåííÿ îá`ºêòà ñòåêà çàçâè÷àé ìîæíà âèêîíàòè ÷åðåç îïåðàòîð ïðèñâîþâàííÿ, ÿêèé ÷àñòî ðåàë³çîâàíèé ó â³äïîâ³äíèõ êëàñ³â. Äëÿ öüîãî îá`ºêòó î÷èùàåìîãî ñòåêà ïîòð³áíî ïðèñâî¿òè òèì÷àñîâèé îá`ºêò, ñòâîðåíèé êîíñòðóêòîðîì çà çàìîâ÷óâàííÿì. Íàïðèêëàä, øàáëîííèé êëàñ stack ñòàíäàðòíî¿ á³áë³îòåêè C ++, ùî º àäàïòåðîì øàáëîííèõ êëàñ³â êîíòåéíåð³â, íå ìຠìåòîä³â äîâ³ëüíîãî çì³íè ê³ëüêîñò³ àáî âèäàëåííÿ âñ³õ åëåìåíò³â. Î÷èñòèòè éîãî ìîæíà òàê:
std :: stack gt; oStack- // äåêëàðàö³ÿ îá`ºêòà ñòåêà
for (int i = 0 i lt; 10 i ++) oStack.push (i) - // çàïîâíåííÿ ñòåêà
oStack = std :: stack gt; () - // î÷èùåííÿ ñòåêà
std :: stack
for (int i = 0 i lt; 10 i ++) oStack.push (i) - // çàïîâíåííÿ ñòåêà
oStack = std :: stack
4
Î÷èñò³òü îá`ºêò ñòåêà øëÿõîì âèêëèêó êîíñòðóêòîðà êîï³þâàííÿ çà äîïîìîãîþ îïåðàòîðà new c àðãóìåíòîì-îá`ºêòîì, ñòâîðåíèì êîíñòðóêòîðîì çà çàìîâ÷óâàííÿì:
std :: stack gt; oStack- // äåêëàðàö³ÿ îá`ºêòà ñòåêà
for (int i = 0 i lt; 10 i ++) oStack.push (i) - // çàïîâíåííÿ ñòåêà
new std :: stack gt; (oStack) - // î÷èùåííÿ ñòåêà
std :: stack
for (int i = 0 i lt; 10 i ++) oStack.push (i) - // çàïîâíåííÿ ñòåêà
new std :: stack
5
Ñòåê ìîæíà î÷èñòèòè øëÿõîì ïîñë³äîâíîãî âèëó÷åííÿ âñ³õ åëåìåíò³â çà äîïîìîãîþ â³äïîâ³äíèõ ìåòîä³â:
std :: stack gt; oStack- // äåêëàðàö³ÿ îá`ºêòà ñòåêà
for (int i = 0 i lt; 10 i ++) oStack.push (i) - // çàïîâíåííÿ ñòåêà
while (! oStack.empty ()) oStack.pop () - // î÷èùåííÿ ñòåêà
Îäíàê äàíèé ï³äõ³ä ìຠòèì÷àñîâó ñêëàäí³ñòü, ë³í³éíî çàëåæèòü â³ä ê³ëüêîñò³ åëåìåíò³â â ñòåêó. Òîìó éîãî âèêîðèñòàííÿ íå ðàö³îíàëüíî.
std :: stack
for (int i = 0 i lt; 10 i ++) oStack.push (i) - // çàïîâíåííÿ ñòåêà
while (! oStack.empty ()) oStack.pop () - // î÷èùåííÿ ñòåêà
Îäíàê äàíèé ï³äõ³ä ìຠòèì÷àñîâó ñêëàäí³ñòü, ë³í³éíî çàëåæèòü â³ä ê³ëüêîñò³ åëåìåíò³â â ñòåêó. Òîìó éîãî âèêîðèñòàííÿ íå ðàö³îíàëüíî.
Ñòàòò³ çà òåìîþ "ßê î÷èñòèòè ñòåê"
Îö³í³òü, áóäü ëàñêà ñòàòòþ