מחלקת CharInt (let, num) מייצגת ריצת תווים זהים. zip דוחסת שרשרת תווים לשרשרת CharInt; unZip מפרקת בחזרה לשרשרת תווים.
מחלקת CharInt (let, num) מייצגת ריצת תווים זהים. zip דוחסת שרשרת תווים לשרשרת CharInt; unZip מפרקת בחזרה לשרשרת תווים.
public class CharInt
{
private char let;
private int num;
public CharInt(char let, int num)
{
this.let = let;
this.num = num;
}
// set/get לכל תכונה, ו-toString — נתונים, אין צורך לממש
}
שרשרת תווים לדוגמה (טקסט מקורי) ותוצאת הדחיסה (טקסט דחוס). פוענח מהדאמפ-טקסט הגולמי בעמוד 9 (java) / עמוד 24 (csharp), אומת חישובית (הרצת zip האמיתי על הקלט נותנת בדיוק את אותה תוצאה).
טקסט מקורי (שרשרת תווים): k → k → k → b → b → k → z → e → e → null
טקסט דחוס (שרשרת CharInt, אחרי zip): (k,3) → (b,2) → (k,1) → (z,1) → (e,2) → null
כתבו פעולה המקבלת הפנייה לחוליה הראשונה של שרשרת חוליות של תווים ("טקסט מקורי"). הפעולה מחזירה את הפנייה לחוליה הראשונה של שרשרת חדשה של עצמים מטיפוס CharInt ("טקסט דחוס").
public static Node<CharInt> zip(Node<Character> chain)
כתבו פעולה המקבלת הפנייה לחוליה הראשונה של שרשרת המייצגת "טקסט דחוס" ומחזירה את הפנייה לחוליה הראשונה של שרשרת תווים המייצגת "טקסט מקורי".
public static Node<Character> unZip(Node<CharInt> chain)
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.