נשלח בתאריך: 08 February 2010 בשעה 00:28 | | IP רשוּם
|
|
|
|
בס"ד
אינני יודע את הכתיב של java אבל אכל לתת לך אלגוריתם כללי:
1. כל עוד ישנו איבר ברשימה, בצע: (לולאת while)
1.א. ריצה ע"פ num איברים קדימה וצבירתם (-לולאת for המקדמת גם את ה i וגם את המצביע. עליך להשתמש במצביע נוסף ע"מ שתוכלי לשמור על ראש הרשימה)
1.ב. שמירת התוצאה במערך עזר (-עדיף מערך דינמי, כמובן).
2. מצא את התא במערך שערכו הוא הגדול ביותר ושמור את ה index שלו. (-לולאת for)
3. קדם את המצביע של תחילת הרשימה index פעמים והחזר אותו. (- שוב לולאת for המקדמת גם את i וגם את המצביע)
לגבי פעולה מס' 1 הנ"ל, ישנה בעיה:
אינך צריכה לרוץ ע"פ כל הרשימה, אלא עד האיבר ה num לפני האחרון. וזאת משום שממנו עליך לצבור num איברים קדימה- כלומר ממנו ועד האחרון.
לכן הלולאה הנכונה היא זו:
1. כל עוד לא הגעת לאיבר ה num לפני באחרון, בצע: וכו'.
איך נדע מהו האיבר ה num לפני האחרון? אחת משתים:
א. לפני כן נעבור ע"פ כל הרשימה ונספור כמה איברים יש בה.
אם אין ברצונך לעשות זאת,
ב. תוך כדי הרצת לולאה מס' 1, נריץ לולאת עזר הרצה num איברים קדימה ובודקת האם קיים איבר.
בהצלחה.
|