Download as pdf or txt
Download as pdf or txt
You are on page 1of 15

‫תרגילי הכנה למבחן במבנה נתונים –‬

‫מחסנית‬

‫חלק א'‬

‫‪.1‬‬
‫א‪.‬‬
‫‪ ‬כתבו פעולה המקבלת מחסנית מספרים שלמים‪.‬‬
‫‪ ‬הפעולה מחזירה את מספר האיברים במחסנית‪.‬‬

‫‪ ‬כותרת הפעולה –‬
‫)‪int func(Stack<int> stk‬‬

‫‪ ‬יש לשמור על המחסנית במצב המקורי בסיום הפעולה‪.‬‬

‫ב‪ .‬מה סיבוכיות הפעולה? הסבר‪.‬‬

‫‪1‬‬
‫נכתב ע"י ניצן דולינסקי ‪Ⓒ‬‬
‫אין לשכפל ‪ /‬להעתיק ללא אישור‬
‫פתרון‬
.‫א‬
class Program
{
static int func(Stack<int> stk)
{
int count = 0;
Stack<int> tmpStk = new Stack<int>();

while (!stk.IsEmpty())
{
tmpStk.Push(stk.Pop());
count++;
}

while (!tmpStk.IsEmpty())
stk.Push(tmpStk.Pop());

return count;
}

static void Main(string[] args)


{
Stack<int> stk = new Stack<int>();
for (int i = 0; i < 5; i++)
stk.Push(i);
Console.WriteLine(func(stk));
Console.ReadKey();
}
}

2
Ⓒ ‫נכתב ע"י ניצן דולינסקי‬
‫ להעתיק ללא אישור‬/ ‫אין לשכפל‬
‫ב‪.‬‬
‫‪ ‬הלולאה הראשונה מבצעת כמות איטרציות כמספר האיברים במחסנית‬
‫הראשונה‪ ,‬מעדכנת ‪ ,count‬ודוחפת כל מספר למחסנית השנייה ‪ -‬סיבוכיות‬
‫זמן )‪.O(n‬‬
‫‪ ‬הלולאה השנייה מבצעת כמות איטרציות כמספר האיברים במחסנית‬
‫השנייה‪ ,‬ודוחפת כל מספר למחסנית הראשונה ‪ -‬סיבוכיות זמן )‪.O(n‬‬
‫‪ ‬לכן‪ ,‬סיבוכיות הזמן הכוללת של פונקציית ‪ func‬היא )‪ ,O(n‬כאשר כאשר ‪n‬‬
‫הוא מספר האיברים במחסנית‪.‬‬

‫‪3‬‬
‫נכתב ע"י ניצן דולינסקי ‪Ⓒ‬‬
‫אין לשכפל ‪ /‬להעתיק ללא אישור‬
‫‪.2‬‬
‫א‪.‬‬
‫‪ ‬כתבו פעולה המקבלת מחסנית מספרים שלמים‪.‬‬
‫‪ ‬הפעולה מחזירה את סכום המספרים במחסנית‪.‬‬

‫‪ ‬כותרת הפעולה –‬
‫)‪int func(Stack<int> stk‬‬

‫‪ ‬יש לשמור על המחסנית במצב המקורי בסיום הפעולה‪.‬‬

‫ב‪ .‬מה סיבוכיות הפעולה? הסבר‪.‬‬

‫‪.3‬‬
‫א‪.‬‬
‫‪ ‬כתבו פעולה המקבלת מחסנית מספרים שלמים‪.‬‬
‫‪ ‬הפעולה מחזירה את ממוצע המספרים במחסנית‪.‬‬

‫‪ ‬כותרת הפעולה –‬
‫)‪int func(Stack<int> stk‬‬

‫‪ ‬יש לשמור על המחסנית במצב המקורי בסיום הפעולה‪.‬‬

‫ב‪ .‬מה סיבוכיות הפעולה? הסבר‪.‬‬

‫‪4‬‬
‫נכתב ע"י ניצן דולינסקי ‪Ⓒ‬‬
‫אין לשכפל ‪ /‬להעתיק ללא אישור‬
‫‪.4‬‬
‫א‪.‬‬
‫‪ ‬כתבו פעולה המקבלת מחסנית מספרים שלמים‪.‬‬
‫‪ ‬הפעולה מחזירה את המספר הגבוה במחסנית‪.‬‬

‫‪ ‬כותרת הפעולה –‬
‫)‪int func(Stack<int> stk‬‬

‫‪ ‬יש לשמור על המחסנית במצב המקורי בסיום הפעולה‪.‬‬

‫ב‪ .‬מה סיבוכיות הפעולה? הסבר‪.‬‬

‫‪.5‬‬
‫א‪.‬‬
‫‪ ‬כתבו פעולה המקבלת מחסנית מספרים שלמים ומספר‪.‬‬
‫‪ ‬הפעולה מחזירה ערך בוליאני – האם המספר נמצא במחסנית‪.‬‬

‫‪ ‬כותרת הפעולה –‬
‫)‪boolean func(Stack<int> stk, int num‬‬

‫‪ ‬יש לשמור על המחסנית במצב המקורי בסיום הפעולה‪.‬‬

‫ב‪ .‬מה סיבוכיות הפעולה? הסבר‪.‬‬

‫‪5‬‬
‫נכתב ע"י ניצן דולינסקי ‪Ⓒ‬‬
‫אין לשכפל ‪ /‬להעתיק ללא אישור‬
‫‪.6‬‬
‫א‪.‬‬
‫‪ ‬כתבו פעולה המקבלת מחסנית מספרים שלמים‪.‬‬
‫‪ ‬הפעולה מחזירה את המספר האחרון במחסנית‪.‬‬

‫‪ ‬כותרת הפעולה –‬
‫)‪int func(Stack<int> stk‬‬

‫‪ ‬יש לשמור על המחסנית במצב המקורי בסיום הפעולה‪.‬‬

‫ב‪ .‬מה סיבוכיות הפעולה? הסבר‪.‬‬

‫‪.7‬‬
‫א‪.‬‬
‫‪ ‬כתבו פעולה המקבלת מחסנית מספרים שלמים‪.‬‬
‫‪ ‬הפעולה מחזירה את המספר האמצעי במחסנית אם מספר האיברים אי‪-‬‬
‫זוגי‪ .‬אחרת מחזירה ‪.0‬‬

‫‪ ‬כותרת הפעולה –‬
‫)‪int func(Stack<int> stk‬‬

‫‪ ‬יש לשמור על המחסנית במצב המקורי בסיום הפעולה‪.‬‬

‫ב‪ .‬מה סיבוכיות הפעולה? הסבר‪.‬‬

‫‪6‬‬
‫נכתב ע"י ניצן דולינסקי ‪Ⓒ‬‬
‫אין לשכפל ‪ /‬להעתיק ללא אישור‬
‫‪.8‬‬
‫א‪.‬‬
‫‪ ‬כתבו פעולה המקבלת מחסנית מספרים שלמים ומספר שלם‪.‬‬
‫‪ ‬הפעולה מוסיפה את המספר למקומות הזוגיים ומחסירה מהמקומות‬
‫האי‪-‬זוגיים את המספר‪.‬‬

‫‪ ‬כותרת הפעולה –‬
‫)‪void func(Stack<int> stk, int num‬‬

‫‪ ‬יש לשמור על המחסנית במצב המקורי בסיום הפעולה‪.‬‬

‫ב‪ .‬מה סיבוכיות הפעולה? הסבר‪.‬‬

‫‪.9‬‬
‫א‪.‬‬
‫‪ ‬כתבו פעולה המקבלת מחסנית מספרים שלמים‪.‬‬
‫‪ ‬הפעולה מחזירה את המספר האמצעי במחסנית אם מספר האיברים אי‪-‬‬
‫זוגי‪ .‬אחרת מחזירה ‪.0‬‬

‫‪ ‬כותרת הפעולה –‬
‫)‪int func(Stack<int> stk‬‬

‫‪ ‬יש לשמור על המחסנית במצב המקורי בסיום הפעולה‪.‬‬

‫ב‪ .‬מה סיבוכיות הפעולה? הסבר‪.‬‬

‫‪7‬‬
‫נכתב ע"י ניצן דולינסקי ‪Ⓒ‬‬
‫אין לשכפל ‪ /‬להעתיק ללא אישור‬
‫‪.10‬‬
‫א‪.‬‬
‫‪ ‬כתבו פעולה המקבלת מחסנית מספרים שלמים ומספר שלם ‪.n‬‬
‫‪ ‬הפעולה מורידה מהמחסנית את ‪ n‬המספרים התחתונים‪.‬‬

‫‪ ‬כותרת הפעולה –‬
‫)‪void func(Stack<int> stk‬‬

‫‪ ‬יש לשמור על המחסנית במצב המקורי בסיום הפעולה‪.‬‬

‫ב‪ .‬מה סיבוכיות הפעולה? הסבר‪.‬‬

‫‪8‬‬
‫נכתב ע"י ניצן דולינסקי ‪Ⓒ‬‬
‫אין לשכפל ‪ /‬להעתיק ללא אישור‬
‫‪.11‬‬
‫א‪.‬‬
‫‪ ‬כתבו פעולה המקבלת ‪ 2‬מחסניות מספרים שלמים‪.‬‬
‫‪ ‬הפעולה מכניסה את מספרי המחסנית השנייה בתחתית המחסנית‬
‫הראשונה‪.‬‬

‫‪ ‬כותרת הפעולה –‬
‫)‪void func(Stack<int> stk1, Stack<int> stk2‬‬

‫‪ ‬יש לשמור על המחסניות במצב המקורי בסיום הפעולה‪.‬‬


‫לפני‬ ‫אחרי‬
‫‪Stk1‬‬ ‫‪Stk2‬‬ ‫‪Stk1‬‬ ‫‪Stk2‬‬
‫‪4‬‬ ‫‪8‬‬ ‫‪4‬‬ ‫‪8‬‬
‫‪3‬‬ ‫‪7‬‬ ‫‪3‬‬ ‫‪7‬‬
‫‪2‬‬ ‫‪6‬‬ ‫‪2‬‬ ‫‪6‬‬
‫‪1‬‬ ‫‪5‬‬ ‫‪1‬‬ ‫‪5‬‬
‫‪8‬‬
‫‪7‬‬
‫‪6‬‬
‫‪5‬‬

‫ב‪ .‬מה סיבוכיות הפעולה? הסבר‪.‬‬

‫‪9‬‬
‫נכתב ע"י ניצן דולינסקי ‪Ⓒ‬‬
‫אין לשכפל ‪ /‬להעתיק ללא אישור‬
‫‪.12‬‬
‫א‪.‬‬
‫‪ ‬כתבו פעולה המקבלת ‪ 2‬מחסניות מספרים שלמים‪.‬‬
‫‪ ‬הפעולה מכניסה את מספרי המחסנית השנייה בין מספרי המחסנית‬
‫הראשונה‪.‬‬

‫‪ ‬כותרת הפעולה –‬
‫)‪void func(Stack<int> stk1, Stack<int> stk2‬‬

‫‪ ‬יש לשמור על המחסניות במצב המקורי בסיום הפעולה‪.‬‬


‫לפני‬ ‫אחרי‬
‫‪Stk1‬‬ ‫‪Stk2‬‬ ‫‪Stk1‬‬ ‫‪Stk2‬‬
‫‪4‬‬ ‫‪8‬‬ ‫‪8‬‬ ‫‪8‬‬
‫‪3‬‬ ‫‪7‬‬ ‫‪4‬‬ ‫‪7‬‬
‫‪2‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪6‬‬
‫‪1‬‬ ‫‪5‬‬ ‫‪3‬‬ ‫‪5‬‬
‫‪6‬‬
‫‪2‬‬
‫‪5‬‬
‫‪1‬‬

‫ב‪ .‬מה סיבוכיות הפעולה? הסבר‪.‬‬

‫‪10‬‬
‫נכתב ע"י ניצן דולינסקי ‪Ⓒ‬‬
‫אין לשכפל ‪ /‬להעתיק ללא אישור‬
‫‪.13‬‬
‫א‪.‬‬
‫‪ ‬כתבו פעולה המקבלת מחסנית מספרים שלמים‪.‬‬
‫‪ ‬הפעולה מחזירה ‪ true‬אם סכום האיברים העליונים שווה לסכום‬
‫האיברים התחתונים ששווה לאיבר האמצעי‪.‬‬
‫‪ ‬כותרת הפעולה –‬
‫)‪void func(Stack<int> stk‬‬

‫‪ ‬יש לשמור על המחסניות במצב המקורי בסיום הפעולה‪.‬‬


‫דוגמה‬
‫‪Stk1‬‬
‫‪4‬‬
‫‪3‬‬
‫‪7‬‬
‫‪1‬‬

‫‪6‬‬

‫ב‪ .‬מה סיבוכיות הפעולה? הסבר‪.‬‬

‫‪11‬‬
‫נכתב ע"י ניצן דולינסקי ‪Ⓒ‬‬
‫אין לשכפל ‪ /‬להעתיק ללא אישור‬
.14
‫ פלינדרום הוא רצף תווים שקריאתו מימין לשמאל ומשמאל לימין היא‬
.‫זהה‬
"abcdcba" ,"abba" :‫ לדוגמה‬
.‫ כתבו פעולה המקבלת מחסנית אותיות‬
.‫ המחסנית היא פלינדרום‬true ‫ הפעולה מחזירה‬
– ‫ כותרת הפעולה‬
Boolean func(Stack<char> s)

class Program
{

public static Boolean func(Stack<char> s)


{
Stack<char> reversedStack = new Stack<char>();
string str = "";
int count = 0;

while (!s.IsEmpty())
{
str += s.Top();
reversedStack.Push(s.Pop());
count++;
}

for (int i = 0; i<count; i++)


if (str[i] != reversedStack.Pop())
return false;

return true;

static void Main(string[] args)


{
string inputStr = "abccba";
Stack<char> s1 = new Stack<char>();
for (int i = 0; i < inputStr.Length; i++)
s1.Push(inputStr[i]);

Console.WriteLine(func(s1));
}
}

12
Ⓒ ‫נכתב ע"י ניצן דולינסקי‬
‫ להעתיק ללא אישור‬/ ‫אין לשכפל‬
7 ‫חלק ב' – תרגילים מספר – פרק‬

13,14,16 ‫ לפתור תרגילים‬


:16 ‫ פתרון‬
class Program
{

public static int GetTopSums(Stack<int>[] stacks)


{
int sum = 0;
for (int i = 0; i< stacks.Length; i++)
sum += stacks[i].Top();
return sum;
}

static void Main(string[] args)


{

Stack<int>[] s1 = new Stack<int>[3];

s1[0] = new Stack<int>();


s1[1] = new Stack<int>();
s1[2] = new Stack<int>();
for (int i = 0; i < 5; i++)
s1[0].Push(i);
for (int i = 1; i < 6; i++)
s1[1].Push(i);
for (int i = 2; i < 7; i++)
s1[2].Push(i);

Console.WriteLine(GetTopSums(s1));
Console.ReadKey();
}
}

13
Ⓒ ‫נכתב ע"י ניצן דולינסקי‬
‫ להעתיק ללא אישור‬/ ‫אין לשכפל‬
‫חלק ג' – תרגילים מבחינות חיצוניות‬

‫‪ – 0202‬קיץ מועד ב' – שאלה ‪5‬‬

‫‪14‬‬
‫נכתב ע"י ניצן דולינסקי ‪Ⓒ‬‬
‫אין לשכפל ‪ /‬להעתיק ללא אישור‬
‫‪ – 0200‬קיץ מועד ב' – שאלה ‪1‬‬

‫‪15‬‬
‫נכתב ע"י ניצן דולינסקי ‪Ⓒ‬‬
‫אין לשכפל ‪ /‬להעתיק ללא אישור‬

You might also like