מחסנית
שיעור 10 מתוך 23 בקורס C++ - ספריית התבניות הסטנדרטית של Coddy.
בפרק הזה תלמדו על מתאמי מכולה. המתאמים שתלמדו עליהם הם מחסנית, תור ותור עדיפויות.
מחסנית Stack ב-C++ היא מבנה נתונים המבוסס על עקרון LIFO (נכנס אחרון — יוצא ראשון) . פירוש הדבר הוא שהאיברים שנוספו אחרונים למבנה הנתונים של המחסנית יוסרו ראשונים, ואפשר יהיה לגשת לאיבר הראשון שנוסף למחסנית אחרון (זה דומה מאוד לערימת צלחות או פנקייקים. כשעורמים צלחות, אי אפשר לקחת את הצלחת שנמצאת בתחתית ונוספה ראשונה; צריך לקחת את הצלחת האחרונה, שנמצאת למעלה).

stack<dataType> stackName;כדי ליצור מחסנית ב-C++, תחילה עלינו לכלול את קובץ הכותרת stack בראש קובץ ה-C++, באמצעות #include <stack>.
לאחר מכן נוכל להצהיר על משתנה מחסנית, כפי שמוצג להלן.
stack<int> number_stack = {1, 2, 3};אז איך מוסיפים איברים למחסנית? — משתמשים בשיטה push().
stack<int> number_stack;
number_stack.push(1);
number_stack.push(2);
...כך אפשר להוסיף איברים חדשים למחסנית.
בנוסף, אנחנו צריכים להציג איברים על המסך. עושים זאת באמצעות השיטה top(), שמחזירה את הערך האחרון שנמצא בראש המחסנית.
cout << number_stack.top();Output:
2אבל אם נמשיך להציג את top() על המסך, נמשיך לקבל את האיברים האחרונים, ובמקרה הזה את 2. לכן אנחנו צריכים שיטה להסרת איבר מראש המחסנית. לשם כך משתמשים בשיטה pop(), שמסירה את האיבר האחרון שבראש המחסנית.
cout << number_stack.top() << endl;
number_stack.pop();
cout << number_stack.top();Output:
2
1לסיכום, מבנה הנתונים מחסנית שימושי מאוד ב-C++, בכתיבת קוד ובתכנות תחרותי בכלל. המאפיין המרכזי שלו הוא השימוש בעקרון נכנס אחרון — יוצא ראשון.
שיטות של מחסנית
| שיטה | תפקוד |
size() | מחזירה את מספר האיברים במחסנית |
empty() | מחזירה true אם המחסנית ריקה, ו-false אחרת |
swap() | מחליפה את התוכן של מחסנית אחת בתוכן של מחסנית אחרת |
אתגר
קלניתן לך מספר N מהקלט. ב־N השורות הבאות מופיע מספר אחד בכל שורה.
השתמש במחסנית והצג כל מספר שהוזן, אבל החל מהמספר האחרון ולכיוון ההפוך.
Input
5
1
2
3
4
5Output
5
4
3
2
1נסו בעצמכם
#include <stack>
#include <iostream>
using namespace std;
int main()
{
// Enter your code here
return 0;
}כל השיעורים ביחידה C++ - ספריית התבניות הסטנדרטית
תרגלו בעצמכם: קומפיילר C++ אונליין