שאלה 2.

צפה בנושא הקודם צפה בנושא הבא Go down

שאלה 2.

הודעה  shay86 on Fri Apr 17, 2009 1:43 am

מישהו עשה את ה- MERGE ברקורסיה?
אני תמיד נשאר עם רשימה ממויינת אבל אין לי איך להכניס ל- TAIL את ה- NODE האחרון..
זו הרקורסיה שלי:
ListNode* merge3(ListNode* head1, ListNode* head2)
{
if (head1 == NULL)
return head2;
if (head2 == NULL)
return head1;

if (*head1->dataPtr <= *head2->dataPtr)
{
head1->next = merge3(head1->next, head2);
return head1;
}
else
{
head2->next = merge3(head1, head2->next);
return head2;
}
}

הכל טוב ויפה אבל אני לא יודע איך עכשיו להכניס את ה- TAIL.
אגב הפונקציה מעטפת שלי יוצרת רשימה חדשה שמקבלת את מה שהרקורסיה הזו מחזירה
avatar
shay86
by ref
by ref

מספר הודעות : 14
Join date : 11.04.09

צפה בפרופיל המשתמש

חזרה למעלה Go down

Re: שאלה 2.

הודעה  Admin on Fri Apr 17, 2009 8:09 am

לא הצלחתי להבין את אופי הרקורסיה של הפונקציה שלך.
מה שכן אפשר להציע לך לנסות, וזו רק הצעה וזה דיי לא שגרתי,
זה להגדיר בפונקציית המעטפת שלך משתנה סטטי
static ListNode* updatedTail
ולנסות למצוא דרך שבה הפונקציה הרקורסיבית שלך תעדכן את הזנב הכי רלוונטי כך שכשהרקורסיה תגמר תהייה לך הכתובת המעודכנת והנכונה של הזנב. וכל שתצטרך לעשות זה לשים כתובת זו בשדה הtail של רשימת הפלט שלך.

סתם רעיון.. לא יודע עד כמה הוא יישים.. confused
avatar
Admin
Admin

מספר הודעות : 62
Join date : 08.04.09
Age : 32

צפה בפרופיל המשתמש http://csmta.forumhebrew.com

חזרה למעלה Go down

Re: שאלה 2.

הודעה  shay86 on Fri Apr 17, 2009 4:33 pm

אז כנראה שהרקורסיה שלי לא נכונה בכלל,
יש לך רעיון אחר לרקורסיה חדשה?
המחשבה שלי הייתה כיוון שזו רקורסיה אז אני חייב לשלוח את הNODE הבא
ולכן אני חייב להתקדם כל פעם אחד קדימה.
avatar
shay86
by ref
by ref

מספר הודעות : 14
Join date : 11.04.09

צפה בפרופיל המשתמש

חזרה למעלה Go down

צפה בנושא הקודם צפה בנושא הבא חזרה למעלה


 
Permissions in this forum:
אתה לא יכול להגיב לנושאים בפורום זה