Ένας από τους τύπους δομών δεδομένων που χρησιμοποιούνται ευρέως σήμερα στον προγραμματισμό εφαρμογών είναι η στοίβα. Η ιδιαιτερότητά του είναι η αρχή της οργάνωσης στοιχείων, στην οποία η προσθήκη και η αφαίρεσή τους είναι δυνατή μόνο ένα κάθε φορά και μόνο μέσω της «κορυφής», δηλαδή, σύμφωνα με την αρχή του LIFO. Αλλά μερικές φορές είναι απαραίτητο να καθαρίσετε ολόκληρη τη στοίβα ταυτόχρονα.
Απαραίτητη
- - πρόγραμμα επεξεργασίας κειμένου ή IDE ·
- - μεταφραστής από τη χρησιμοποιημένη γλώσσα προγραμματισμού.
Οδηγίες
Βήμα 1
Χρησιμοποιήστε μεθόδους στα αντικείμενα στοίβας που έχουν σχεδιαστεί ειδικά για να καθαρίσετε τη στοίβα. Είναι παρόντες στις περισσότερες από τις αντίστοιχες τάξεις διαφόρων βιβλιοθηκών και πλαισίων. Για παράδειγμα, η κλάση. NET Stack έχει μια μέθοδο Clear. Ένα παράδειγμα εφαρμογής του στο C # μπορεί να μοιάζει με αυτό:
Στοίβα oStack = νέα στοίβα (); // δημιουργήστε ένα αντικείμενο στοίβας
oStack. Push ("000"); // γεμίστε τη στοίβα
oStack. Push ("111");
oStack. Clear (); // καθαρίστε τη στοίβα
Βήμα 2
Μέθοδοι για την αλλαγή του αριθμού των στοιχείων τάξεων κοντέινερ, στα οποία συχνά δημιουργείται η λειτουργικότητα των τάξεων στοίβας, μπορούν επίσης να χρησιμοποιηθούν για τον καθαρισμό. Απλώς πρέπει να μειώσετε τον τρέχοντα αριθμό στοιχείων στο μηδέν. Για παράδειγμα, η κλάση προτύπου Qt QStack κληρονομείται από την κλάση προτύπου QVector, η οποία έχει μια μέθοδο αλλαγής μεγέθους. Ένα παράδειγμα της χρήσης του θα μπορούσε να είναι ως εξής:
QStack oStack; // δήλωση του αντικειμένου στοίβας
για (int i = 0; i <10; i ++) oStack.push (i); // γεμίστε τη στοίβα
oStack.resize (0); // καθαρίστε τη στοίβα
Βήμα 3
Ο καθαρισμός ενός αντικειμένου στοίβας μπορεί συνήθως να γίνει μέσω του χειριστή ανάθεσης, ο οποίος εφαρμόζεται συχνά στις αντίστοιχες τάξεις. Για να γίνει αυτό, το αντικείμενο της στοίβας που πρέπει να διαγραφεί πρέπει να εκχωρηθεί ένα προσωρινό αντικείμενο που δημιουργήθηκε από τον προεπιλεγμένο κατασκευαστή. Για παράδειγμα, η τυποποιημένη κλάση στοίβας τυπικής βιβλιοθήκης C ++, η οποία είναι προσαρμογέας για κλάσεις προτύπων κοντέινερ, δεν διαθέτει μεθόδους αυθαίρετης αλλαγής του αριθμού ή κατάργησης όλων των στοιχείων. Μπορείτε να το καθαρίσετε ως εξής:
std:: stack <int, std:: list> oStack; // δήλωση του αντικειμένου στοίβας
για (int i = 0; i <10; i ++) oStack.push (i); // γεμίστε τη στοίβα
oStack = std:: στοίβα
Βήμα 4
Εκκαθαρίστε το αντικείμενο στοίβας καλώντας τον κατασκευαστή αντιγράφων χρησιμοποιώντας τον νέο τελεστή με ένα όρισμα αντικειμένου που δημιουργήθηκε από τον προεπιλεγμένο κατασκευαστή:
std:: stack <int, std:: list> oStack; // δήλωση του αντικειμένου στοίβας
για (int i = 0; i <10; i ++) oStack.push (i); // γεμίστε τη στοίβα
νέο std:: stack
Βήμα 5
Η στοίβα μπορεί να εκκαθαριστεί ανακτώντας διαδοχικά όλα τα στοιχεία χρησιμοποιώντας τις κατάλληλες μεθόδους:
std:: stack <int, std:: list> oStack; // δήλωση του αντικειμένου στοίβας
για (int i = 0; i <10; i ++) oStack.push (i); // γεμίστε τη στοίβα
ενώ (! oStack.empty ()) oStack.pop (); // διαγράψτε τη στοίβα
Ωστόσο, αυτή η προσέγγιση έχει μια πολυπλοκότητα χρόνου που εξαρτάται γραμμικά από τον αριθμό των στοιχείων στη στοίβα. Επομένως, η χρήση του δεν είναι λογική.