עבור לתוכן

עזרה במימוש פעולה עם מחלקה גנרית

Featured Replies

פורסם

אני צריך עזרה במימוש הפעולה הזו:

public static void compressSequences (Node<Character> chain)

הפעולה מקבלת שרשרת חוליות של תווים.הפעולה תצמצם רצפי תווים, כך שלא יופיעו תווים זהים ברצף. התו הראשון בכל רצף יישאר וכל השאר יוסרו. יש לשמור על סדר התווים.

המחלקה Node:

public class Node<T>
{
private T info;
private Node<T> next;
public Node (T x)
{
this.info=x;
this.next=null;
}
public Node(T x, Node<T> next)
{
this.info=x;
this.next=next;
}
public Node<T> getNext()
{
return this.next;
}
public void setNext(Node<T> next)
{
this.next=next;
}
public T getInfo()
{
return this.info;
}
public void setInfo(T x)
{
this.info=x;
}
public String toString()
{
return this.info.toString();
}
}

תודה מראש :)

פורסם

יעזור אם תאמר (גם בכותרת) באיזו שפה אתה כותב.

חוץ מזה, כמו שאני אומר תמיד: אף אחד לא יפתור לך את התרגיל. תאמר מה ניסית לעשות וננסה לעזור לך.

פורסם

זה נראה C#.

בכל מקרה, תחשוב על זה כמו חיפוש במערך, רק עם שני הבדלים שיהיה עליך להתמודד איתן:

  • המעבר בין איבר לאיבר הוא לא סתם בעזרת i++, אתה צריך לקדם מצביע כלשהו
  • אין לך אפשרות לחזור אחורנית עם המצביע שלך

תחשוב איך להתמודד עם זה :xyxthumbs:

  • 4 שבועות מאוחר יותר...
פורסם

לי זה לא נראה כמו C# אלא כמו Java.


public static void compressSequences(Node <Character> chain)
{
Node<Character>pos=chain;
while (pos.getNext()!=null)
{
if (pos.getInfo()==pos.getNext().getInfo())
pos.setNext(pos.getNext().getNext());
else
pos=pos.getNext();
}
}

פורסם

אני כבר בקושי זוכר חומר של תיכון אבל שני דברים -

התנאי בודק אחד קדימה ואחכ אתה משתמש בשניים קדימה - ארור

האלס נראלי טעות כי תמיד צריך להתקדם לא רק אם מחקנו

התיקון לדעתי זה לבדוק בלולאה שניים קדימה ולהוסיף באיף פוס=...

רק שמישהו יגיד אם צדקתי כי אינלי מושג...

פורסם

האלס נראלי טעות כי תמיד צריך להתקדם לא רק אם מחקנו

אתה צריך להתקדם רק אם בחוליה הבאה אין את אותו תו, אחרת אתה צריך למחוק. (תחשוב על מחיקה כסוג של התקדמות).

למען הסר ספק הרצתי את הקוד לפני שפרסמתי אותו

פורסם

צודק. לא לקחתי בחשבון שצריך לבדוק את הזוג החדש שנוצר.

אבל עדיין איך אתה בודק רק פוז אחד קדימה בלולאה, ובתוכו אתה אומר "pos.getNext().getNext()" ?

פורסם

אין שום בעיה עם זה. הבדיקה מבטיחה ש-pos.getNext אינו null ולכן אפשר להפעיל את הפונקציות שלו. במקרה ש-pos הוא האיבר הלפני אחרון, pos.getNext().getNext() הוא null.

פורסם

נכנע :nixweiss:

אני צריך לחזור על החומר לבגרות...מזל שאיכשהו עברתי את זה

ארכיון

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

דיונים חדשים