הפעולה sod משתמשת ב-0 כשומר-סף ובפעולת עזר רקורסיבית what כדי לסדר מחדש תור של מספרים חיוביים ושליליים (ללא אפסים). ארבעה סעיפים: מעקב על דוגמה, ניתוח טענות על 'ללא שינוי', אפיון כללי, ומימוש איטרטיבי שווה-ערך.
הפעולה sod משתמשת ב-0 כשומר-סף ובפעולת עזר רקורסיבית what כדי לסדר מחדש תור של מספרים חיוביים ושליליים (ללא אפסים). ארבעה סעיפים: מעקב על דוגמה, ניתוח טענות על 'ללא שינוי', אפיון כללי, ומימוש איטרטיבי שווה-ערך.
public static void sod(Queue<Integer> q)
{
q.insert(0);
what(q);
q.remove();
}
public static void what(Queue<Integer> q)
{
if (q.head() != 0)
{
int x = q.remove();
if (x > 0)
q.insert(x);
what(q);
if (x < 0)
q.insert(x);
}
}
התור q לדוגמה עבור סעיף א' (ראש התור בצד ימין, לפי אותה מוסכמת חצים כמו שאלה 1/5: ראש=שמאל בציור).
ראש→ 3 | -1 | 7 | 2 | 4 | -9 ←סוף
מה יהיה התוכן של התור q אחרי זימון הפעולה sod(q) עבור התור הבא (ראו איור)? יש להראות מעקב אחרי ביצוע הפעולה.
אחרי זימון הפעולה sod(q) עבור התור q לא ריק, התור q נשאר ללא שינוי. לפניכם ארבע טענות. עבור כל אחת מהטענות ציינו אם היא נכונה או לא, ותנו דוגמה של תור מתאימה.
- זה יכול לקרות רק כאשר בתור יש ערך אחד בלבד.
- זה יכול לקרות רק כאשר התור מלא בערכים חיוביים בלבד.
- זה יכול לקרות רק כאשר התור מלא בערכים שליליים בלבד.
- לא ייתכן שבתור יש גם ערכים חיוביים וגם ערכים שליליים.
מה מבצעת הפעולה sod באופן כללי עבור תור של מספרים שליליים וחיוביים (ללא אפסים)?
כתבו את הפעולה sod בלי שימוש ברקורסיה.
public static void sod(Queue<Integer> q)
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.