בעזרת המחלקה BinNode אפשר לממש שרשרת חוליות דו-כיוונית (getLeft = 'קודם', getRight = 'הבא'). מבקשים לסדר מחדש כך שהזוגיים יופיעו לפני האי-זוגיים, בלי מבנה נתונים נוסף ובלי לשנות את זהות החוליה הראשונה שהקורא מחזיק.
בעזרת המחלקה BinNode אפשר לממש שרשרת חוליות דו-כיוונית (getLeft = 'קודם', getRight = 'הבא'). מבקשים לסדר מחדש כך שהזוגיים יופיעו לפני האי-זוגיים, בלי מבנה נתונים נוסף ובלי לשנות את זהות החוליה הראשונה שהקורא מחזיק.
לפני הפעולה: chain -> 1 <-> 11 <-> 4 <-> 6 <-> 3 (null בשני הקצוות). אחרי הפעולה יכולה להיות: chain -> 6 <-> 4 <-> 11 <-> 1 <-> 3 (הזוגיים 6,4 בתחילת השרשרת, האי-זוגיים 11,1,3 בסופה; סדר האיברים בתוך כל קבוצה אינו חשוב).
לפני: null <- 1 <-> 11 <-> 4 <-> 6 <-> 3 -> null (chain מצביע על 1)
אחרי (יכולה להיות): null <- 6 <-> 4 <-> 11 <-> 1 <-> 3 -> null (chain מצביע על 6)
כתבו פעולה המקבלת הפנייה לחוליה הראשונה (הכי שמאלית) של שרשרת חוליות דו-כיוונית ומסדרת אותה כך שכל הערכים הזוגיים יהיו בתחילת השרשרת וכל הערכים האי-זוגיים יהיו בסופה. סדר האיברים לא חשוב. שימו לב: אין להשתמש במבנה נתונים נוסף.
public static void order(BinNode<Integer> chain)
מהי סיבוכיות הפעולה order שכתבתם בסעיף א'? הסבירו את תשובתכם.
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.