Menu
Coddy logo textTech

מחסנית

שיעור 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()מחליפה את התוכן של מחסנית אחת בתוכן של מחסנית אחרת
challenge icon

אתגר

קל

ניתן לך מספר N מהקלט. ב־N השורות הבאות מופיע מספר אחד בכל שורה. 
השתמש במחסנית והצג כל מספר שהוזן, אבל החל מהמספר האחרון ולכיוון ההפוך.

 

Input
5
1
2
3
4
5
Output
5
4
3
2
1

נסו בעצמכם

#include <stack>
#include <iostream>

using namespace std;

int main()
{
    // Enter your code here

    return 0;
}

כל השיעורים ביחידה C++ - ספריית התבניות הסטנדרטית

תרגלו בעצמכם: קומפיילר C++ אונליין