מטרת השאלה זה להכריח אותך לחשוב מחוץ לקופסא
מה שקיים ברוב שפות התכנות זה בדיוק הקופסא. נכון, צריך להמציא משהו שלא קיים, אחרת לא היו שואלים את השאלה. אבל גם הוספת משתנה עזר אחד הופך את זה למבנה חדש. וזאת בדיוק הבניה. זה לא חייב להיות מסובך כדי שזה יהיה נכון. בנוסף לבניה, צריך גם לתאר איך, בעזרת הבניה, עושים את הפעולות בסיבוכיות הנדרשת. זה החלק של האלגוריתמים בעסק (כי הרי מבנה נתונים חסר ערך בלי אלגוריתמים של פעולות עליו). זה כל הסיפור. עכשיו לגבי השפה - אתה צריך להבין שמבנה נתונים ופעולות עליו לא קשורים לשפת תכנות. אני עשיתי את הקורס במבני נתונים לפני ממש הרבה זמן, אבל אני זוכר טוב מאוד שלא צריך לתאר קוד מכונה, או קוד C, אלא פסאודוקוד - דהיינו תיאור מילולי של האלגוריתם. באיזו שפה מממשים אותו - זה לא משנה, זה לא משפיע על הסיבוכיות. מערך זה מבנה נתונים, ואפשר למממש אותו בדרכים שונות. למשל, זה יכול להיות רצף של איברים בזכרון, או לחלופין רצף של מצביעים לאיברים בזכרון (כמו למשל מערך מחרוזות בC, שניתן להגדיר בכל אחת מהדרכים). אבל זה מימוש טכני, זה לא משפיע על האלגוריתם או על סיבוכיות פעולות על המבנה. מבנה הנתונים זה מושג אבסטרקטי, כשמערך לצורך העניין זה אוסף נתונים שניתן לגשת לכל אחד מהם בגישה אקראית. הם לא חייבים להיות רציפים (למשל - מערכים רב מימדיים הרבה פעמים לא יהיו רציפים בזכרון), וזה עדיין יהיה מערך. מה שמגדיר מבנה נתונים (כל מבנה נתונים) זה שני דברים: פעולות, וסיבוכיות שלהן. כל מבנה נתונים, שאתה יכול לגשת לנתונים בו בגישה אקראית, לכתוב ולקרוא בO של 1, ולחפש בO של N בלי מיון, זה יהיה מערך. איך תממש את זה? לא משנה.