 
        ה'/חשון/תשע"ה
מחסנית  -הגדרה
מחסנית (מבנה נתונים) – מתוך ויקיפדיה
מחסנית היא סוג של מבנה נתונים מופשט הפועל בצורה דומה לזו
של מחסנית רובה :האיבר שנכנס ראשון למחסנית יוצא ממנה אחרון.
תכונה זו מכונה נכנס אחרון יוצא ראשון LIFO - Last In First Out -
ראש המחסנית – המקום אליו מכניסים וממנו מוציאים את הערכים.
23
-30
4
5
13
0
8
A
B
C
A
D
A
B
ראש
המחסנית
1
מחסנית הגדרה ופעולות ממשק
מחסנית פעולות ממשק
)(new Stack
פעולה המחזירה מחסנית ריקה
לדוגמה –
ראש
המחסנית
;)(Stack s = new Stack
מחסנית הגדרה ופעולות ממשק
2
1
ה'/חשון/תשע"ה
מחסנית פעולות ממשק
)(IsEmpty
 פעולה המחזירה 'אמת' אם המחסנית ריקה ,ו'שקר'
אחרת.
הנחה :המחסנית מאותחלת.
 לדוגמה-
אמת
שקר
))(if(s.IsEmpty
23
-30
;n = 3
ראש
המחסנית
ראש
המחסנית
4
5
13
0
8
3
מחסנית הגדרה ופעולות ממשק
מחסנית פעולות ממשק
)Push(x
פעולה המכניסה את האיבר  Xלראש המחסנית.
הנחה :המחסנית מאותחלת.
7
6
5
4
3
2
1
ראש
המחסנית
)s.Push(7
 sאחרי
6
5
4
3
2
1
ראש
המחסנית
 sלפני
מחסנית הגדרה ופעולות ממשק
4
2
ה'/חשון/תשע"ה
מחסנית פעולות ממשק
)(Pop
פעולה המוציאה את האיבר שבראש המחסנית ומחזירה
את ערכו.
הנחה :המחסנית מאותחלת ואינה ריקה.
מוחזר הערך 7
6
5
4
3
2
1
ראש
המחסנית
)(s.Pop
 sאחרי
7
6
5
4
3
2
1
ראש
המחסנית
 sלפני
5
מחסנית הגדרה ופעולות ממשק
מחסנית פעולות ממשק
)(Top
פעולה המחזירה את ערכו של האיבר שבראש המחסנית
מבלי להוציאו.
הנחה :המחסנית מאותחלת ואינה ריקה.
מוחזר הערך 7
7
6
5
4
3
2
1
ראש
המחסנית
)(s.Top
 sאחרי
7
6
5
4
3
2
1
ראש
המחסנית
 sלפני
מחסנית הגדרה ופעולות ממשק
6
3
ה'/חשון/תשע"ה
אופן סריקת מחסנית
באופן כללי  -עוברים על כל איברי המחסנית בלולאת כל עוד ע"י שליפת
איברי המחסנית מראשה אחד אחר השני.
בכל ביצוע של הלולאה מבצעים חישוב/פעולה על הערך שיצא מראש
המחסנית.
הלולאה מסתיימת כאשר המחסנית ריקה (תנאי עצירה של הלולאה).
תבנית בC#-
))(while (!s.IsEmpty
{
;)(x = s.Top
//חישוב/פעולה על הערך שיצא מראש המחסנית
;)(s.Pop
}
7
מחסנית הגדרה ופעולות ממשק
אופן סריקת מחסנית – דוגמה 1
 פעולה להצגת כל הערכים הזוגיים במחסנית
)static void PrintZugi(Stack s
{
//מקבלת מחסנית של מספרים ומציגה את אלו הזוגיים במחסנית
//הנחה – המחסנית אותחלה
))(while (!s.IsEmpty
{
;)(x = s.Top
)if (x % 2 == 0
;)Console.WriteLine(x
;)(s.Pop
}
}
מחסנית הגדרה ופעולות ממשק
8
4
ה'/חשון/תשע"ה
אופן סריקת מחסנית – דוגמה 2
 פעולה לחישוב מספר הערכים החיוביים במחסנית
)static int CountHiyuvi(Stack s
{
//מקבלת מחסנית של מספרים ומחזירה את מספר הערכים החיוביים בה
//הנחה – המחסנית אותחלה
;count = 0
))(while (!s.IsEmpty
{
;)(x = s.Top
)if (x > 0
;count++
;)(s.Pop
}
;return count
}
9
מחסנית הגדרה ופעולות ממשק
מחסנית מספרים – תרגיל 1
כתוב פעולה ,המקבלת מחסנית מלאה במספרים טבעיים ומציגה את כל המספרים התלת-
ספרתיים במחסנית.
)static void PrintThreeDigit(Stack s
{
//מקבלת מחסנית של מספרים טבעיים ומציגה את אלו התלת ספרתיים במחסנית
//הנחה – המחסנית אותחלה
;int x
))(while (!s.IsEmpty
{
;)(x = s.Top
)if (x >= 100 && x <= 999
;)Console.WriteLine(x
;)(s.Pop
}
}
מחסנית הגדרה ופעולות ממשק
10
5
ה'/חשון/תשע"ה
מחסנית מספרים – תרגיל 2
כתוב פעולה ,המקבלת מחסנית מלאה במספרים שלמים ומחזירה את סכום
המספרים במחסנית שמספר ספרותיהן זוגי.
פעולת עזר – לחישוב מספר ספרותיו של מספר
)static int CountDigit(int num
{
//מחזירה את מספר הספרות של המספר
;int count = 0
)while (num > 0
{
;count++
;num /= 10;//num = num/10
}
;return count
}
11
מחסנית הגדרה ופעולות ממשק
מחסנית מספרים – תרגיל 2
הפעולה העיקרית
)static int SumEvenDigitsStack(Stack s
{
//מקבלת מחסנית של מספרים טבעיים ומחזירה את סכום המספרים בעלי מספר זוגי של ספרות במחסנית
//הנחה – המחסנית אותחלה
;int sum = 0; int x
))(while (!s.IsEmpty
{
;)(x = s.Top
)if (CountDigit(x) % 2 == 0
;sum += x
;)(s.Pop
}
;return sum
מחסנית הגדרה ופעולות ממשק
} 12
6
				
											        © Copyright 2025