נתונות שתי הפעולות isExist1 ו-isExist2.
נתונות שתי הפעולות 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
מהי הסיבוכיות של כל אחת מהפעולות שכתבתם? הסבירו את תשובתכם.
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.