הפוך_רשימה(L)
{השגרה מקבלת כפרמטר רשימה L המכילה שלמים ומחזירה את אותה רשימה כך שהתהפכו בה סדר איבריה.
הנחה:הרשימה L מאותחלת}
* אין להשתמש ברשימת עזר במהלך הפתרוןדרכים לפתרון:
א. נחזיק שני מצביעים הראשון P שינוע בכיוון מתחילת הרשימה לסופה ומצביע Q שינוע בכיוון מסוף הרשימה לתחילתה.
נקדם שני מצביעים אלה בהתאמה N DIV 2 פעמיים (מ-אורך הרשימה)
ובכל שלב נאחזר את הערכים ש- P ו- Q מצביעים עליהם(עי' אחזר_מרשימה)
ונחליף ביניהם עי' השגרה עדכן_רשימה.
ב. נחזיק שני מצביעים האחד Q שישמור לנו את האיבר האחרון ברשימה ומצביע שני P "שיטייל" לכיוון תחילת הרשימה.
בתחילה P מצביע על המקום של Q.
כל עוד P<>מכתובת העוגן, כלומר מ- L נבצע את המהלכים הבאים:
1. נזיז את P תא אחד אחורה באמצעות קודם_ברשימה.
2. נאחזר את הערך ש- P מצביע עליו לתוך X.
3. נכניס ערך זה אחרי Q, באמצעות הכנס_לרשימה(L,Q,X)
4. נקדם את Q ב- 1.
5. נוציא מרשימה את זה ש- P מצביע עליו, הוצא_מרשימה, ובעקבות זה P יתקדם תא אחד קדימה.
אני מתקשה לרשום שני אלגוריתמים לפתרון הבעיה..
אני צריך לתרגם את שני הדרכים הללו לאלגוריתמים מילוליים...
תודה לעוזרים...
והמשך יום טוב...