אתם מתרגלים שאלה מתוך מה"ט מבני נתונים ותכנות מונחה עצמים — הנדסאי תוכנהמבחן 2025 · קיץ מועד א · שאלה 9כל שאלות המבחן ←
מבנים לינאריים›מחסניות

נתונות שתי הפעולות IsExist1 ו-IsExist2.

public static bool IsExist1(Stack<int> st, int x){
    while(!st.IsEmpty()){
        if(st.Pop()==x) return true;
    }
    return false;
}
public static bool IsExist2(Stack<int> st, int x){
    Stack<int> temp = new Stack<int>();
    bool f = false;
    while(!st.IsEmpty()){
        if(st.Top()==x) f = true;
        temp.Push(st.Pop());
    }
    while(!temp.IsEmpty()) {
        st.Push(temp.Pop());
    }
    return f;
}
סעיף א

הסבירו מה מבצעת כל אחת מהפעולות, מה ההבדל ביניהן ומהי הסיבוכיות של כל אחת מהן.

סעיף ב

public static bool ContainsAll(Stack<int> st1, Stack<int> st2)

כתבו פעולה המקבלת שתי מחסניות שלמים st1 ו-st2. הפעולה תבדוק אם כל האיברים של st1 נמצאים במחסנית st2 גם כן. אם כן, הפעולה תחזיר ערך true, ואם לא – הפעולה תחזיר ערך false.

לדוגמה, עבור זוג המחסניות שלפניכם הפעולה תחזיר ערך true:

st1: 2, 3, 10, 7

st2: 3, 14, 2, 2, 3, 7, 10, 2, 10

סעיף ג

public static bool ContainsInOrder(Stack<int> st1, Stack<int> st2)

כתבו פעולה המקבלת שתי מחסניות שלמים st1 ו-st2. הפעולה תבדוק אם כל האיברים של st1 נמצאים במחסנית st2 באותו הסדר. אם כן, הפעולה תחזיר ערך true, ואם לא – הפעולה תחזיר ערך false.

לדוגמה, עבור זוג המחסניות מסעיף ב' הפעולה תחזיר ערך false. אבל אם המחסנית st2 תהיה כך (התאים המסומנים בהדגשה הם האיברים של st1, לפי הסדר):

st2: 3, 14, 2, 2, 3, 7, 10, 2, 7

הפעולה תחזיר ערך true.

סעיף ד

public static bool IsSubStack(Stack<int> st1, Stack<int> st2)

כתבו פעולה המקבלת שתי מחסניות שלמים st1 ו-st2. הפעולה תבדוק אם המחסנית st1 היא תת-מחסנית של st2 (כלומר, אם כל האיברים של המחסנית st1 נמצאים במחסנית st2 ברצף ובאותו הסדר). אם כן, הפעולה תחזיר ערך true, ואם לא – הפעולה תחזיר ערך false.

לדוגמה, עבור זוג המחסניות מסעיף ב' או ג' הפעולה תחזיר ערך false. אבל אם המחסנית st2 תהיה כך (התאים המסומנים בהדגשה הם st1 ברצף):

st2: 3, 14, 2, 2, 3, 10, 7, 2, 7

סעיף ה

מהי הסיבוכיות של כל אחת מהפעולות שכתבתם? הסבירו את תשובתכם.

שאלות ותגובות על השאלה

🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות

שאלו כאן — ותקבלו מענה מוסמך.

🎓 מרצה לתכנות עונה כאן — תקבלו מענה מקצועי