הערה כללית לשאלה:
- אין להשתמש במבני נתונים נוספים.
- אפשר להניח שקיימת פעולה SizeQ המחזירה את מספר האיברים בתור. כותרת הפעולה:
public static int SizeQ(Queue<int> q)
(א)כתבו פעולה המקבלת תור של מספרים שלמים וחיוביים q ומספר שלם חיובי pos. הפעולה תחזיר איבר אשר נמצא במקום pos בתור בלי להוציא אותו מהתור. אם אין מקום pos בתור, הפעולה תחזיר ערך (-1).
הערה: האיבר הנמצא בראש התור הוא איבר במקום 1, איבר אחריו – במקום 2 וכו'.
כותרת הפעולה:
```csharp
public static int ValueAt(Queue<int> q, int pos)
```
הערה: האיבר הנמצא בראש התור הוא איבר במקום 1, איבר אחריו – במקום 2 וכו'.
כותרת הפעולה:
```csharp
public static int ValueAt(Queue<int> q, int pos)
```
(ב)כתבו פעולה המקבלת 2 תורים של מספרים שלמים q1 ו-q2. הפעולה תיצור ותחזיר תור חדש לפי כלל הבא:
- קודם כול מכניסים איבר ראשון מהתור q1, ואחריו – איבר האחרון מהתור q2.
- איבר 2 מהתור q1, איבר לפני האחרון מהתור q2.
- וכך הלאה.
אפשר להניח שאורכם של 2 התורים שווה.
כותרת הפעולה:
```csharp
public static Queue<int> Merge (Queue<int>q1, Queue<int>q2)
```
- קודם כול מכניסים איבר ראשון מהתור q1, ואחריו – איבר האחרון מהתור q2.
- איבר 2 מהתור q1, איבר לפני האחרון מהתור q2.
- וכך הלאה.
אפשר להניח שאורכם של 2 התורים שווה.
כותרת הפעולה:
```csharp
public static Queue<int> Merge (Queue<int>q1, Queue<int>q2)
```
(ג)מהן הסיבוכיות של הפעולות שכתבתם בסעיפים א' ו-ב'? הסבירו את תשובתכם.
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה בטיחות
שאלו כאן — ותקבלו מענה מוסמך.
רוצים לתרגל אלפי שאלות נוספות?
המשיכו לתרגול מלא עם משוב אישי ←מבחני מה"ט אמיתיים · משוב מיידי · וידאו לכל נושא · מעקב התקדמות