אחד מסוגי מבני הנתונים הנמצאים בשימוש נרחב כיום בתכנות יישומים הוא הערימה. הייחודיות שלו היא עקרון הארגון של היסודות, שבהם הוספה והסרה שלהם אפשרית רק אחד בכל פעם ורק דרך ה"צמרת ", כלומר על פי עקרון 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 ++ Standard Stack, המהווה מתאם למחלקות תבניות מיכל, אין שיטות לשינוי המספר באופן שרירותי או להסרת כל האלמנטים. אתה יכול לנקות את זה כך:
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 חדש:: מחסנית
שלב 5
ניתן לנקות את הערימה על ידי אחזור רצוף של כל האלמנטים בשיטות המתאימות:
std:: stack <int, std:: list> oStack; // הכרזה על אובייקט הערימה
עבור (int i = 0; i <10; i ++) oStack.push (i); // למלא את הערימה
בעוד (! oStack.empty ()) oStack.pop (); // נקה את הערימה
עם זאת, לגישה זו יש מורכבות זמן שתלויה באופן ליניארי במספר האלמנטים בערימה. לכן השימוש בו אינו רציונלי.