טוען...
טוען...
שימו לב
בכל שאלה שנדרש בה מימוש אפשר להשתמש בפעולות של המחלקות: תור, מחסנית, עץ בינרי וחוליה, בלי לממש אותן. אם משתמשים בפעולות נוספות, יש לממש אותן.
לפניכם הפעולה mmm, המקבלת תור – q ובו מספרים הגדולים מ־0, ומספר שלם z – הגדול מ־0.
java1public static boolean mmm (Queue<Integer> q, int z)
2{
3 q.insert (0);
4 int num = q.head();
5 int y = 0;
6 while (q.head() > 0)
7 {
8 if (y < z)
9 {
10 if (q.head() == num)
11 {
12 y++;
13 }
14 else
15 {
16 num = q.head();
17 y = 1;
18 }
19 }
20 q.insert (q.remove());
21 }
22 q.remove();
23 return y == z;
24}
נתון תור q מטיפוס שלם:
(1) עקבו בעזרת טבלת המעקב שלפניכם אחר הפעולה mmm (q, 4), וכתבו מה הפעולה מחזירה.
התור q | num | y | y < z | q.head() == num |
|---|
(2) הסבירו מה הפעולה mmm עושה.
(3) מהי סיבוכיות זמן הריצה של הפעולה mmm? נמקו את תשובתכם.
לפניכם הפעולה what, המקבלת תור – q ובו מספרים הגדולים מ־0, ואת גודל התור – n.
java1public static int what (Queue<Integer> q, int n)
2{
3 if (mmm (q, n))
4 return n;
5 return what (q, n - 1);
6}
נתון תור – q מטיפוס שלם:
(1) עקבו אחר הפעולה what (q, 6), וכתבו מה הפעולה מחזירה (אין צורך לעקוב אחר הפעולה mmm).
המעקב יכלול בכל קריאה את הערכים של q, n ואת הערך המוחזר.
לפניכם הצעה לטבלת מעקב (אין חובה להשתמש בטבלה זו).
התור q שמתקבל בפעולה | הערך n שמתקבל בפעולה | mmm (q, n) == true | ערך מוחזר |
|---|
(2) הסבירו מה הפעולה what עושה.
(3) מהי סיבוכיות זמן הריצה של הפעולה what? נמקו את תשובתכם.
שימו לב
בכל שאלה שנדרש בה מימוש אפשר להשתמש בפעולות של המחלקות: תור, מחסנית, עץ בינרי וחוליה, בלי לממש אותן. אם משתמשים בפעולות נוספות, יש לממש אותן.
לפניכם הפעולה mmm, המקבלת תור – q ובו מספרים הגדולים מ־0, ומספר שלם z – הגדול מ־0.
java1public static boolean mmm (Queue<Integer> q, int z)
2{
3 q.insert (0);
4 int num = q.head();
5 int y = 0;
6 while (q.head() > 0)
7 {
8 if (y < z)
9 {
10 if (q.head() == num)
11 {
12 y++;
13 }
14 else
15 {
16 num = q.head();
17 y = 1;
18 }
19 }
20 q.insert (q.remove());
21 }
22 q.remove();
23 return y == z;
24}
נתון תור q מטיפוס שלם:
(1) עקבו בעזרת טבלת המעקב שלפניכם אחר הפעולה mmm (q, 4), וכתבו מה הפעולה מחזירה.
התור q | num | y | y < z | q.head() == num |
|---|
(2) הסבירו מה הפעולה mmm עושה.
(3) מהי סיבוכיות זמן הריצה של הפעולה mmm? נמקו את תשובתכם.
לפניכם הפעולה what, המקבלת תור – q ובו מספרים הגדולים מ־0, ואת גודל התור – n.
java1public static int what (Queue<Integer> q, int n)
2{
3 if (mmm (q, n))
4 return n;
5 return what (q, n - 1);
6}
נתון תור – q מטיפוס שלם:
(1) עקבו אחר הפעולה what (q, 6), וכתבו מה הפעולה מחזירה (אין צורך לעקוב אחר הפעולה mmm).
המעקב יכלול בכל קריאה את הערכים של q, n ואת הערך המוחזר.
לפניכם הצעה לטבלת מעקב (אין חובה להשתמש בטבלה זו).
התור q שמתקבל בפעולה | הערך n שמתקבל בפעולה | mmm (q, n) == true | ערך מוחזר |
|---|
(2) הסבירו מה הפעולה what עושה.
(3) מהי סיבוכיות זמן הריצה של הפעולה what? נמקו את תשובתכם.