פורסם 2021 ביוני 104 שנים אהלן, חייב חייב עזרה אשמח שתעזרו לי שאלה בתור: כתוב פעולה המקבלת תור que ומחזירה תור חדש שהוא היפוך סדר האיברים של התור que עבור: que[1,2,3,4] יוחזר התור [4,3,2,1] ***ללא שימוש במבני נתונים נוספים, רמז רקורסיה*** כתוב תור חדש והסתבכתי עם זה מי שיכול לעזור לי עם היפוך לתור חדש והרקורסיה אודה לו מאוד!! בבקשה עזרה למתכונת הסתבכתי וכשאני רואה דרך אני מבין לפיה אנחנו משתמשים בhead, remove וכאלה כלומר בNode וQueue אשמח לעזרה דחוףמאוד
פורסם 2021 ביוני 134 שנים הבעיה שלך היא ב- 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. תרגיל (בשביל לוודא שהבנת): האם חייבים תור חדש? או שאפשר לעשות את זה תוך שימוש בתור המקורי בלבד?
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.