- הגשות
- פתרונות
- פתרון רשמי
- תיאור
ברצוננו לממש תור \(Q\) באמצעות שתי מחסניות \(s_1\) ו-\(s_2\), כך שעבור \(n\) פעולות הכנסה ו-\(m\) פעולות מחיקה, בסדר אפשרי כלשהו (\(m \le n\)), על \(Q\) ריק מלכתחילה, זמן הריצה (כלומר כמות הפעולות הבסיסיות – PUSH ו-POP) יהיה \(O(n+m)\).
א. תארו את מבנה המימוש וכתבו בפסאודו-קוד את הפעולות ENQUEUE ו-DEQUEUE של \(Q\) בעזרת פעולות המחסניות PUSH ו-POP.
ב. מהו זמן הריצה של כל פעולה של \(Q\) במקרה הגרוע ובמקרה הטוב?
ג. הראו שזמן הריצה של \(n\) פעולות הכנסה ו-\(m\) פעולות מחיקה, בסדר אפשרי כלשהו (\(m \le n\)), על \(Q\) ריק מלכתחילה, הוא \(O(n+m)\).
הדרכה: ספרו כמה פעולות PUSH וכמה פעולות POP לכל היותר יכולות להתבצע במהלך כל \(n+m\) ההכנסות והמחיקות.
השתמשו במחסנית אחת להכנסות (ENQUEUE) ובמחסנית השנייה להוצאות (DEQUEUE). העבירו איברים מהמחסנית הראשונה לשנייה רק כאשר מחסנית ההוצאות ריקה.