שאלה ראשונה של רשימות מקושרות
עמוד 1 מתוך 1
Re: שאלה ראשונה של רשימות מקושרות
פתרתי את התרגיל הזה כבר בשתי דרכים, אבל יש לי תחושה שלא לדרכים האלה התכוונו...
מישהו הבין, האם צריך לקלקל את רשימת הקלט של הפונקציה?
Itai Blyman wroteon April 5, 2009 at 1:18pm
בתכל'ס...אתה מקבל רשימה מפוזרת שהסדר של הספרות הוא הסדר הנכון ביניהן וככה גם עם האותיות...
ולפי דעתי אתה צריך לרוץ על הקלט הזה וכל פעם שאתה רואה מספר תשמור אותו בצד בשביל להכניס לציון ואת הנוד הזה תעשה הסרה...וככה תישאר לך רשימה רק של אותיות שכבר יהיו לפי הסדר...
והציון בצד שפשוט תכניס אותו...
Zach Beniash wroteon April 5, 2009 at 1:25pm
ואז ככה לא יצרתי שום הקצאה דינאמית בשביל הרשימת פלט, לא בשביל הצ'ארים ולא בשביל הנודים עצמם.
שזה באמת עונה על הדרישה של השאלה
וזה גם אומר שבאמת חייבים לשנות את רשימת הקלט.
תודה!
Itai Blyman wroteon April 5, 2009 at 2:24pm
בבקשה ..אתה יודע שאנחנו גרים מטר...יש שאלה תקשר או תקפוץ...או סקייפ או משהו...
Itay Angel wroteon April 5, 2009 at 6:04pm
התכתבתי עם איריס ארוכות ובכל זאת לא הצלחתי כ"כ להבין הכל:
הסיכום הוא כזה :
ב-main חייבים אמנם להקצות מקום - לכל שדה מסוג * char יש להקצות char בודד ולאחסן בתוכו את האות או הספרה הנחוצים.
בפונקציה שבשאלה אין הקצאות אלא אך ורק משחק עם מצביעים.
בכל מקרה בתרגילי הבית אין שימוש ב- dummy head.
ד"ר רוזנבלום
Zach Beniash wroteon April 5, 2009 at 9:01pm
למה - למה החופרת הזאת הייתה חייבת לחפור לנו על רשימות מקושרות עם
dummy head
ואז בסוף לזרוק שתי מילים על השיטה האחרת, שאותה אנחנו הכי צריכים לשיעורים?!
למה??
כל הזמן אני צריך לדאוג לבדוק את הצומת הראשונה
ולעדכן את הזנב המיותר הזה....
יאאאאאא
Itai Blyman wroteon April 6, 2009 at 12:46am
לפחות סיימת עם השאלה הראשונה...
תחי הרקורסיה...(או בהערה בצד שזאת יכולה להיות פונקציה ששולחת לפונקציה רקורסיבית..)
OH JOY!
מה את מאותגרת שכלית!?
תמחקי את החיוך הפדופילי שלך לרגע ותתחילי לענות..סעמק..איזה שחרור אגרסיות על הפוינטרעים האלו..
וכן..פוינטרעים!!!
כי הם מצביעים על רוע!!!
Ori Kotler wroteon April 6, 2009 at 8:11pm
תגידו ... הזנב הבאמת מיותר הזה אמור להצביע על האיבר האחרון ברשימה או על ה
NULL?
Zach Beniash wroteon April 6, 2009 at 9:34pm
.על האיבר האחרון ברשימה
ואני דיי חוזר בי לגביי האמירה שהוא מיותר
כי כשאתה בונה פונקציה שמוסיפה צומת חדשה לרשימה קיימת
כל שעלייך לשלוח לפונקציה זה את הרשימה (שכוללת ראש וזנב) ואת המידע שאתה רוצה להוסיף לצומת החדשה.
בתוך הפונקציה הזאת תעשה שימוש בזנב. פשוט תבצע הקצאה דינאמית לצומת חדשה, תכניס לצומת הזאת את המידע הנחוץ, ואז תגרום למצביע "נקסט" שבזנב להצביע על הצומת החדשה.
לבסוף הזנב יעודכן להצביע על הצומת החדשה שהוספת.
והנה לך שימוש יעיל ביותר לזנב.
Ori Kotler wrote16 hours ago
ואי זה ממש מוזר ... אף אחד לא משתמש ברשימה מקושרת עם זנב ...הרי גם ככה יש לנו "זנב" שזה ה
NULL ...
פשוט סרבול !!! אולי בשביל דברים טיפה יותר מורכבים יש צורך בזנב הזה , אבל בטוח שלא פה
סתם ליצור עוד מבנה מיותר שלא ממש תורם
Zach Beniash wrote14 hours ago
אחינו בשאלה השנייה אתה תמצא הרבה יותר שימוש בזנב הזה
Ori Kotler wrote7 hours ago
כן ... אבל העניין הוא שתמיד במקום לקרוא לזנב אפשר לקרוא לאיבר שמצביע על
NULL
זה בדיוק אותו הדבר
Zach Beniash wrote5 hours ago
כשאתה שולח רשימה לתוך פונקצייה, על מנת לבצע פעולה על האיבר האחרון של הרשימה, או שתעבור על כל המאה עיברים ברשימה אחד אחד עד שתגיע כדברייך לאיבר שמצביע על
NULL
ורק אז תבצע את הפעולה (לאחר 100 פעולות!!) או שהאופציה השנייה שלך
והיעילה פי מאה
היא לפנות ישירות לכתובת שמוזנת בזנב, כי הרי שם נמצא האיבר האחרון של הרשימה.
ובכך תחסוך לעצמך המון פעולות. זה חלק בלתי נפרד מהיתרונות של רשימה על פניי מערך
מישהו הבין, האם צריך לקלקל את רשימת הקלט של הפונקציה?
Itai Blyman wroteon April 5, 2009 at 1:18pm
בתכל'ס...אתה מקבל רשימה מפוזרת שהסדר של הספרות הוא הסדר הנכון ביניהן וככה גם עם האותיות...
ולפי דעתי אתה צריך לרוץ על הקלט הזה וכל פעם שאתה רואה מספר תשמור אותו בצד בשביל להכניס לציון ואת הנוד הזה תעשה הסרה...וככה תישאר לך רשימה רק של אותיות שכבר יהיו לפי הסדר...
והציון בצד שפשוט תכניס אותו...
Zach Beniash wroteon April 5, 2009 at 1:25pm
ואז ככה לא יצרתי שום הקצאה דינאמית בשביל הרשימת פלט, לא בשביל הצ'ארים ולא בשביל הנודים עצמם.
שזה באמת עונה על הדרישה של השאלה
וזה גם אומר שבאמת חייבים לשנות את רשימת הקלט.
תודה!
Itai Blyman wroteon April 5, 2009 at 2:24pm
בבקשה ..אתה יודע שאנחנו גרים מטר...יש שאלה תקשר או תקפוץ...או סקייפ או משהו...
Itay Angel wroteon April 5, 2009 at 6:04pm
התכתבתי עם איריס ארוכות ובכל זאת לא הצלחתי כ"כ להבין הכל:
הסיכום הוא כזה :
ב-main חייבים אמנם להקצות מקום - לכל שדה מסוג * char יש להקצות char בודד ולאחסן בתוכו את האות או הספרה הנחוצים.
בפונקציה שבשאלה אין הקצאות אלא אך ורק משחק עם מצביעים.
בכל מקרה בתרגילי הבית אין שימוש ב- dummy head.
ד"ר רוזנבלום
Zach Beniash wroteon April 5, 2009 at 9:01pm
למה - למה החופרת הזאת הייתה חייבת לחפור לנו על רשימות מקושרות עם
dummy head
ואז בסוף לזרוק שתי מילים על השיטה האחרת, שאותה אנחנו הכי צריכים לשיעורים?!
למה??
כל הזמן אני צריך לדאוג לבדוק את הצומת הראשונה
ולעדכן את הזנב המיותר הזה....
יאאאאאא
Itai Blyman wroteon April 6, 2009 at 12:46am
לפחות סיימת עם השאלה הראשונה...
תחי הרקורסיה...(או בהערה בצד שזאת יכולה להיות פונקציה ששולחת לפונקציה רקורסיבית..)
OH JOY!
מה את מאותגרת שכלית!?
תמחקי את החיוך הפדופילי שלך לרגע ותתחילי לענות..סעמק..איזה שחרור אגרסיות על הפוינטרעים האלו..
וכן..פוינטרעים!!!
כי הם מצביעים על רוע!!!
Ori Kotler wroteon April 6, 2009 at 8:11pm
תגידו ... הזנב הבאמת מיותר הזה אמור להצביע על האיבר האחרון ברשימה או על ה
NULL?
Zach Beniash wroteon April 6, 2009 at 9:34pm
.על האיבר האחרון ברשימה
ואני דיי חוזר בי לגביי האמירה שהוא מיותר
כי כשאתה בונה פונקציה שמוסיפה צומת חדשה לרשימה קיימת
כל שעלייך לשלוח לפונקציה זה את הרשימה (שכוללת ראש וזנב) ואת המידע שאתה רוצה להוסיף לצומת החדשה.
בתוך הפונקציה הזאת תעשה שימוש בזנב. פשוט תבצע הקצאה דינאמית לצומת חדשה, תכניס לצומת הזאת את המידע הנחוץ, ואז תגרום למצביע "נקסט" שבזנב להצביע על הצומת החדשה.
לבסוף הזנב יעודכן להצביע על הצומת החדשה שהוספת.
והנה לך שימוש יעיל ביותר לזנב.
Ori Kotler wrote16 hours ago
ואי זה ממש מוזר ... אף אחד לא משתמש ברשימה מקושרת עם זנב ...הרי גם ככה יש לנו "זנב" שזה ה
NULL ...
פשוט סרבול !!! אולי בשביל דברים טיפה יותר מורכבים יש צורך בזנב הזה , אבל בטוח שלא פה
סתם ליצור עוד מבנה מיותר שלא ממש תורם
Zach Beniash wrote14 hours ago
אחינו בשאלה השנייה אתה תמצא הרבה יותר שימוש בזנב הזה
Ori Kotler wrote7 hours ago
כן ... אבל העניין הוא שתמיד במקום לקרוא לזנב אפשר לקרוא לאיבר שמצביע על
NULL
זה בדיוק אותו הדבר
Zach Beniash wrote5 hours ago
כשאתה שולח רשימה לתוך פונקצייה, על מנת לבצע פעולה על האיבר האחרון של הרשימה, או שתעבור על כל המאה עיברים ברשימה אחד אחד עד שתגיע כדברייך לאיבר שמצביע על
NULL
ורק אז תבצע את הפעולה (לאחר 100 פעולות!!) או שהאופציה השנייה שלך
והיעילה פי מאה
היא לפנות ישירות לכתובת שמוזנת בזנב, כי הרי שם נמצא האיבר האחרון של הרשימה.
ובכך תחסוך לעצמך המון פעולות. זה חלק בלתי נפרד מהיתרונות של רשימה על פניי מערך
עמוד 1 מתוך 1
Permissions in this forum:
אתה לא יכול להגיב לנושאים בפורום זה