עבור לתוכן

JAVA: יישור רשימה המכילה מעגל

Featured Replies

פורסם

יש לכתוב מתודה סטטית בג'אווה המקבלת מצביע לראש רשימה המכילה מעגל, ומצביע לצומת כלשהו בתוך המעגל. המתודה תהפוך את הרשימה לרשימה חסרת מעגלים תוך שמירה על סדר האיברים. היא אינה מחזירה ערך (void).דרישות:*יש להיעזר במתודה סטטית reverseList (אותה אין צורך לממש!) המקבלת מצביע לראש רשימה חד-כיוונית חסרת מעגלים, הופכת את הרשימה ומחזירה את ראש הרשימה ההפוכה.*סיבוכיות זמן O(n) .*ניתן להקצות זיכרון אבל רק בגודל קבוע.*מותר שיטות עזר.

בשאלה המקורית אין חיוב להשתמש במתודת הרוורס ולכן הצלחתי לפתור.

אבל לפתור בעזרת הרוורס - לא הצלחתי!

לכן אני פונה אליכם. אודה לכל רמז/ עצה/ כיוון....

פורסם
  • מחבר

יש שתי דרכים:

האחת, שידרוג של אלגוריתם הצב והארנב שמיועד במקור להוכיח קיום מעגל ברשימה. את השדרוג קיבלתי בפורום אחר ובו מוסיפים צב נוסף וחישוב mod כדי להגיע לתחילת המעגל.

השניה, שאני לא בטוחה בה כי לא הרצתי, היא קצת ארוכה ובה מפצלים את הרשימה החל מהצומת הפנימי המוצבע, סופרים צמתים בכל אחת מהרשימות, ומחשבים את נק' המפגש...

אבל מכיוון שהשאלה המקורית היא דווקא עם הרוורס, מאוד הייתי רוצה לפתור אותה.

תודה מראש!

פורסם

צריך לשחק עם זה קצת. קודם כל, תחשבי מה לעשות לרשימה כדי שבכלל תוכלי להפעיל עליה את הרוורס, ואחר כך תחשבי מה זה בדיוק עושה לאיברים של הרשימה. אפילו תבני לך רשימה לדוגמה כדי לשחק איתה קצת.

פורסם
  • מחבר

בוודאי ששיחקתי עם זה. עד שהתייאשתי!

זו לא אמורה להיות שאלה קשה. אז או שאני חושבת כבד מדי, או (וזה מאוד לא סביר) שיש טעות רצינית בשאלה.

פורסם

כשמנתקים את המעגל בנקודה כלשהי, מקבלים שתי רשימות שמתחברות בנקודה מסויימת. תחשבי מה קורה כשמפעילים רוורס על אחת מהן.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים