אתם מתרגלים שאלה מתוך מה"ט מבני נתונים ותכנות מונחה עצמים — הנדסאי תוכנהמבחן 2022 · אביב מועד ב · שאלה 6כל שאלות המבחן ←
מבנים לינארייםרשימות מקושרות

מחלקת 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)

שאלות ותגובות על השאלה

🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות

שאלו כאן — ותקבלו מענה מוסמך.

🎓 מרצה לתכנות עונה כאן — תקבלו מענה מקצועי