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

נתונות שתי הפעולות isExist1 ו-isExist2.

public static boolean isExist1(Stack<Integer> st, int x){
    while(!st.isEmpty()){
        if(st.pop()==x) return true;
    }
    return false;
}
public static boolean isExist2(Stack<Integer> st, int x){
    Stack<Integer> temp = new Stack<Integer>();
    boolean 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 boolean containsAll(Stack<Integer> st1, Stack<Integer> 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 boolean containsInOrder(Stack<Integer> st1, Stack<Integer> st2)

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

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

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

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

סעיף ד

public static boolean isSubStack(Stack<Integer> st1, Stack<Integer> st2)

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

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

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

סעיף ה

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

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

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

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

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