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