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

שאלה 2.

2 posters

Go down

שאלה 2. Empty שאלה 2.

הודעה  shay86 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.
אגב הפונקציה מעטפת שלי יוצרת רשימה חדשה שמקבלת את מה שהרקורסיה הזו מחזירה
shay86
shay86
by ref
by ref

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

חזרה למעלה Go down

שאלה 2. Empty Re: שאלה 2.

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

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

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

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

https://csmta.forumhebrew.com

חזרה למעלה Go down

שאלה 2. Empty Re: שאלה 2.

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

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

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

חזרה למעלה Go down

חזרה למעלה

- Similar topics

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