תזכורת

‫י"ד‪/‬טבת‪/‬תשע"ה‬
‫רשימה מקושרת – ‪ – List‬תזכורת בנייה וסריקה‬
‫אופן סריקת רשימה‬
‫הגדרת חוליה והצבת עוגן הרשימה החדשה בה‬
‫;)(‪Node<int> p = l.GetFirst‬‬
‫מעבר בלולאה על הרשימה‪ ,‬תנאי עצירה החוליה הגיע לסוף הרשימה (‪)null‬‬
‫)‪while (p != null‬‬
‫{‬
‫שמירת הערך בחוליה לתוך משתנה ‪( x‬וביצוע חישוב‪/‬בדיקה עליו)‬
‫;)(‪x = p.GetInfo‬‬
‫קידום החוליה‬
‫;)(‪p = p.GetNext‬‬
‫}‬
‫רשימה ‪ -‬בניית רשימה ‪ -‬תרגילים נוספים‬
‫‪1‬‬
‫רשימה מקושרת – ‪ – List‬תזכורת בנייה וסריקה‬
‫אופן בניית רשימה‬
‫הגדרת רשימה חדשה‬
‫;)(>‪List<int> l_new = new List<int‬‬
‫הגדרת חוליה והצבת עוגן הרשימה החדשה בה‬
‫;)(‪Node<int> p_new = l_new.GetFirst‬‬
‫הכנסת ערכים לרשימה החדשה בתוך לולאה‬
‫הוספת ערך לרשימה (מחזירה את המיקום אחריו נוסף הערך = החוליה החדשה)‬
‫תוך כדיי קידום החוליה‬
‫;)‪p_new = l_new.Insert(p_new, x_new‬‬
‫רשימה ‪ -‬בניית רשימה ‪ -‬תרגילים נוספים‬
‫‪2‬‬
‫‪1‬‬
‫י"ד‪/‬טבת‪/‬תשע"ה‬
‫בניית רשימה – תרגיל ‪1‬‬
‫‪‬‬
‫כתבו פעולה המקבלת מערך של מספרים שלמים‪ ,‬ומחזירה רשימה של מספרים שלמים מתוך‬
‫המערך‪.‬‬
‫ברשימה יהיו רק המספרים מהמערך הגדולים‪ ,‬בערכם המוחלט‪ ,‬לפחות פי שלושה ממיקומם הסידורי‪.‬‬
‫‪‬‬
‫פתרון‬
‫)‪static List<int> ArrayToList(int[] arr‬‬
‫{‬
‫‪ //‬מחזירה רשימה של מספרים שלמים מתוך המערך הגדולים בערכם המוחלט לפחות פי שלושה ממיקומם‬
‫הסידורי‬
‫;)(>‪List<int> l_new = new List<int‬‬
‫;)(‪Node<int> p_new = l_new.GetFirst‬‬
‫)‪for (int i = 0; i < arr.Length; i++‬‬
‫)‪if (Math.Abs(arr[i]) >= i * 3‬‬
‫;)]‪p_new = l_new.Insert(p_new, arr[i‬‬
‫} ;‪return l_new‬‬
‫רשימה ‪ -‬בניית רשימה ‪ -‬תרגילים נוספים‬
‫‪3‬‬
‫בניית רשימה – תרגיל ‪2‬‬
‫‪‬‬
‫כתבו פעולה המקבלת רשימה של מספרים שלמים‪ ,‬ומחזירה רשימה של מספרים‬
‫שלמים הכוללת רק את המספרים מתוך הרשימה המקורית שאינם גדולים‬
‫מממוצע הערכים בה‪.‬‬
‫‪‬‬
‫פתרון‬
‫‪ ‬טיוטה‬
‫‪ ‬פעולת עזר – ממוצע הערכים ברשימה‬
‫‪ ‬פעולה עיקרית – מעבר על ערכי הרשימה המתקבלת‪ ,‬והכנסה של אלו‬
‫העונים לתנאי לרשימה‬
‫רשימה ‪ -‬בניית רשימה ‪ -‬תרגילים נוספים‬
‫‪4‬‬
‫‪2‬‬
‫תשע"ה‬/‫טבת‬/‫י"ד‬
2 ‫בניית רשימה – תרגיל‬
‫פעולת העזר‬

static double ListAvg(List<int> l)
{
‫ הנחה – הרשימה אותחלה ואינה ריקה‬.‫ מחזירה את ממוצע הערכים ברשימה‬//
int count = 0, sum = 0;
Node<int> p = l.GetFirst();
while (p != null)
{
sum += p.GetInfo();
count++;
p = p.GetNext(); }
return (double)sum / count;
}
5
‫ תרגילים נוספים‬- ‫ בניית רשימה‬- ‫רשימה‬
2 ‫בניית רשימה – תרגיל‬
‫הפעולה העיקרית‬

static List<int> List2List_LessThenAvg(List<int> l){
‫מחזירה רשימה הכוללת את המספרים שאינם גדולים מהממוצע בלבד מתוך הרשימה‬//
‫המתקבלת‬
‫ הרשימה אותחלה‬- ‫הנחה‬//
List<int> l_new = new List<int>();
Node<int> p_new = l_new.GetFirst();
‫חשוב לשמור במשתנה עזר לצורך יעילות‬//
double avg = ListAvg(l); int x;
Node<int> p = l.GetFirst();
while (p != null) {
x = p.GetInfo();
if (x <= avg) p_new = l_new.Insert(p_new, x);
p = p.GetNext();}
return l_new;}
6
3
‫ תרגילים נוספים‬- ‫ בניית רשימה‬- ‫רשימה‬