עבור לתוכן

c#|בעיה בהגדרת המחלקה "תור"

Featured Replies

פורסם

תאר במילים הכנסה של איבר חדש לתור.

  • תגובות 38
  • צפיות 4.6k
  • נוצר
  • תגובה אחרונה
פורסם
  • מחבר

^^^ הערך הנקלט נשמר בחוליה חדשה. בחוליה זו יש הפניה לחוליה האחרונה הנוכחית. ערך התכונה LAST משתנה, וכעת היא מצביעה על האיבר שהתווסף.(או שאני שוב טועה...)

פורסם

זה אכן מה שהקוד שלך עושה, אבל זה לא מה שהוא צריך לעשות (כלומר, זה לא מתאים לציור שלך). מי מצביע על מי לפי הקוד שלך? מי מצביע על מי בציור?

פורסם
  • מחבר

הטעות בציור. החצים צריכים להיות לכיוון הצד השני. ו-FIRST צריך להיות NULL ולא LAST. (ככה זה יהיה כמו הקוד).

פורסם

דווקא הציור שלך בסדר. זה הקוד שלך שלא נכון.

איך הגיוני ש-first יהיה null אבל last לא? תחשוב על זה לוגית - יכולה להיות רשימה עם איבר אחרון אבל בלי איבר ראשון?

פורסם
  • מחבר

^^^ הבנתי מה אתר אומר. שיניתי את הפעולה INSERT, עכשיו זה טוב??

Node<T> temp = new Node<T>(x);
this.last.SetNext(temp);
this.last = temp;

פורסם

:yelclap:

עכשיו תחשוב על טיפול במקרי קצה (איך עושים insert או remove אם הרשימה ריקה?)

פורסם
  • מחבר

נראה לי שהצלחתי :xyxthumbs:

 public void Insert(T x)
{
Node<T> temp = new Node<T>(x);
if (this.first == null)
{
this.first = temp;
this.last = temp;
}
else
{
this.last.SetNext(temp);
this.last = temp;
}
}
public T Remove()
{
if (this.first != null)
{
T temp = this.first.GetInfo();
this.first = this.first.Getnext();
return temp;
}
else
return default(T);
}

שמתי לב שבפעולה REM OVE. ה- DEFAULT מחזיר 0 אם המחסנית ריקה. אז איך משתמש שינסה להוציא חוליה ממחסנית ריקה, ידע שהמחסנית ריקה?(הוא יכול לחשוב שהוא הוציא איבר שהערך שלו זה 0.)

תודה רבה לכולם על העזרה במיוחד לשניצל :yelclap: :yelclap: . בלעדיכם הייתי מתייאש מזה מזמןן

פורסם

יפה מאוד.

שמתי לב שבפעולה REM OVE. ה- DEFAULT מחזיר 0 אם המחסנית ריקה. אז איך משתמש שינסה להוציא חוליה ממחסנית ריקה, ידע שהמחסנית ריקה?(הוא יכול לחשוב שהוא הוציא איבר שהערך שלו זה 0.)

צודק. הפתרון הוא להשתמש בחריגות (exceptions). אם לא למדת על זה עדיין, אז חכה שתגיע לנושא ואז תבין.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים