אתם מתרגלים שאלה מתוך בגרות מדעי המחשב — מבני נתונים (שאלון 899271)מבחן 2018 · קיץ מועד א · שאלה 5כל שאלות המבחן ←
רקורסיהאלגוריתמים רקורסיביים

שים לב: לשאלה זו נוסח אחד ב-Java (עמוד זה) ונוסח אחר ב-C# (בעמוד הבא). לפניך הפעולה sod1, המקבלת הפניה lst לשרשרת חוליות ותו ch, ומחזירה הפניה לחוליה הראשונה בשרשרת שערכה שווה ל-ch (או null אם אינו מופיע).

public static Node<char> Sod1(Node<char> lst, char ch)
{
    if (lst == null)
        return null;
    if (lst.GetValue() == ch)
        return lst;
    return Sod1(lst.GetNext(), ch);
}

public static bool Sod2(Node<char> lst)
{
    if (Sod1(lst,'a') != null && Sod1(lst,'b') != null)
        return true;
    return false;
}

דוגמת מעקב לסעיף א: שרשרת c->d->v->h, קריאה sod1(lst,'v').

lst: c -> d -> v -> h -> null

דוגמאות לסעיף ג: y-b-a (b,a סמוכים, true); m-a-b-l (a,b סמוכים, true); w-a-c-b (a,b קיימים אך לא סמוכים, false).

y->b->a  |  m->a->b->l  |  w->a->c->b
סעיף א1

עקוב אחר הפעולה וכתוב מה יוחזר עבור ch='v' וההפניה lst לשרשרת חוליות של תווים c,d,v,h.

public static Node<char> Sod1(Node<char> lst, char ch)

סעיף א2

מהי מטרת הפעולה sod1?

סעיף א3

מהי סיבוכיות זמן הריצה של הפעולה sod1? נמק.

סעיף ב

נתונה הפעולה sod2 (מקבלת lst, קוראת ל-sod1 פעמיים על 'a' ו-'b'). מה מטרת הפעולה sod2?

public static bool Sod2(Node<char> lst)

סעיף ג

כתוב פעולה בוליאנית המקבלת הפניה לשרשרת חוליות של תווים ומחזירה true אם מופיעות בה שתי חוליות סמוכות שערכיהן 'a' 'b' או 'b' 'a', אחרת — הפעולה מחזירה false. עליך להשתמש בפעולה sod1.

public static bool AdjacentAB(Node<char> lst)

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

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

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

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