עבור לתוכן

Featured Replies

פורסם

אהלן, חייב חייב עזרה אשמח שתעזרו לי
שאלה בתור:
כתוב פעולה המקבלת תור que ומחזירה תור חדש שהוא היפוך סדר האיברים של התור que
עבור: que[1,2,3,4] יוחזר התור [4,3,2,1]
***ללא שימוש במבני נתונים נוספים, רמז רקורסיה***

כתוב תור חדש והסתבכתי עם זה מי שיכול לעזור לי עם היפוך לתור חדש והרקורסיה אודה לו מאוד!!smile.gif

בבקשה עזרה למתכונת הסתבכתי וכשאני רואה דרך אני מבין לפיה

 

 

אנחנו משתמשים בhead, remove וכאלה 

כלומר בNode וQueue אשמח לעזרה דחוףמאוד

פורסם

הבעיה שלך היא ב- syntax או ב"אלגוריתם"?

 

נסה משהו בכיוון הזה (זה פסאודו קוד, כמובן):

 

public Queue reverseQueue(Queue q) {
   Queue newQ = new ...
   reverseQueue(q, newQ)
   return newQ
}

// this is the recursive function
private void reverseQueue(Queue orig, Queue reversed) {
  if orig not empty {
    T element = q.remove() // first in queue
    reverseQueue(orig, reversed)
    reversed.add(element) // add to end of queue
  }
}

 

הערה: כתבת "ללא שימוש במבני נתונים נוספים, רמז רקורסיה", אבל במובן מסויים אנחנו משתמשים ב- call stack בתור מחסנית. זו כנראה סתם התחכמות, אבל כדאי שתבין מה זה ה- call stack.

 

תרגיל (בשביל לוודא שהבנת): האם חייבים תור חדש? או שאפשר לעשות את זה תוך שימוש בתור המקורי בלבד?

הצטרפ/י לדיון

בשלב זה תוכל/י להצטרף לדיון, ולאחר מכן להצטרף לקהילה שלנו. אם כבר יש לך חשבון אצלנו, אנא התחבר/י עכשיו על מנת להגיב תחת שם המשתמש שלך.
לתשומת לבך: התגובה תופיע לגולשים לאחר אישור של צוות הנהלת הפורומים.

אורח
הוסף תגובה

דיונים חדשים