אתם מתרגלים שאלה מתוך בגרות מדעי המחשב — מבני נתונים (שאלון 899271)מבחן 2025 · קיץ מועד Special · שאלה 2כל שאלות המבחן ←
מבנים לינארייםתורים

שני תורים הם "M-מחוברים" אם ערכם של M האיברים האחרונים של התור הראשון זהים (לפי אותו סדר) לערכם של M האיברים הראשונים של התור השני. יש לפתור באמצעות פעולות התור בלבד (insert/remove/head/isEmpty), ללא מערך או רשימה מקושרת, ולשמור על מבנה שני התורים בסיום כל פעולה.

q1, q2 לדוגמה

q1 (ראש->סוף): 2,5,4,4,7,2,6
q2 (ראש->סוף): 2,6,7,1,4,2,1,8,1
סעיף א

כתבו פעולה ששמה isMConnect בשפת Java או IsMConnect בשפת C#, המקבלת תור ראשון - q1, ותור שני - q2 (שניהם מטיפוס שלם) ומשתנה שלם M. הפעולה תחזיר true אם התור q1 הוא "M-מחובר" לתור q2, אחרת היא תחזיר false. הערות:

  • בסיום הפעולה חובה לשמור על מבנה שני התורים כפי שהתקבלו.
  • אין להשתמש בסעיף זה במערך או ברשימה מקושרת. פתרון הכולל שימוש בהם לא יזוכה בנקודות.
  • הניחו ש-M קטן או שווה מאורך 2 התורים. דוגמה: עבור התורים q1,q2 שלפניכם: עבור M=1 יוחזר false (ערך האיבר האחרון של q1 - 6, שונה מערך האיבר הראשון של q2 - 2). עבור M=2 יוחזר true (ערכי שני האיברים האחרונים של q1 שווים לפי אותו סדר לערכי שני האיברים הראשונים של q2). עבור M=3 יוחזר false (ערכי שלושת האיברים האחרונים של q1 - 7,2,6, אינם שווים לפי אותו סדר לערכי שלושת האיברים הראשונים של q2 - 2,6,7).

public static bool IsMConnect (Queue<int> q1, Queue<int> q2, int M)

סעיף ב

כתבו פעולה בשם maxConnect בשפת Java או MaxConnect בשפת C#, המקבלת תור ראשון q1, ותור שני q2 (שניהם מטיפוס שלם). הפעולה תחזיר את ה-M הגדול ביותר שעבורו שני התורים הם "M-מחוברים", אם הם לא מחוברים בכלל, יוחזר 0. הערה: ניתן להשתמש בפעולה מסעיף א. דוגמאות: עבור שני התורים מהדוגמה בסעיף א, והזימון maxConnect(q1,q2) יוחזר המספר 2 (יש שני איברים בסוף q1 שזהים לתחילת q2. כאשר מגדילים את M הם אינם זהים). עבור אותם התורים והזימון maxConnect(q2,q1) יוחזר המספר 0 (אין איברים בסוף q2 שמתאימים לתחילת q1 אף עבור M=1).

public static int MaxConnect (Queue<int> q1, Queue<int> q2)

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

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

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

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