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