ט'/טבת/תשע"ה
רשימה מקושרת List -
כל חוליה היא טנ"מ בפני עצמו המכיל הן את הערך והן את
החוליה הבאה לאחריה
תיאור סְ כֵמַ טי של חוליה
תיאור סְ כֵמַ טי של רשימה
1
רשימה -בניית רשימה
ממשק רשימה
)(>public List<T
)(public Node<T> GetFirst
//הפעולה בונה ומחזירה רשימה ריקה
//הפעולה מחזירה את החוליה הראשונה ברשימה ,אם הרשימה ריקה הפעולה מחזירה
null
//הנחה – הרשימה אותחלה
//הפעולה מחזירה האם הרשימה ריקה
//הנחה – הרשימה אותחלה
//הפעולה מחזירה מחרוזת המתארת את הרשימה
//הנחה – הרשימה אותחלה
)(public bool IsEmpty
)(public override string ToString
רשימה -בניית רשימה
2
1
ט'/טבת/תשע"ה
ממשק רשימה -המשך
)public Node<T> Insert(Node<T> p, T info
//הפעולה מכניסה לרשימה חוליה חדשה שהערך שלה הוא infoאחרי החוליה pהפעולה
מחזירה את החוליה החדשה שהוכנסה.
//כדי להכניס איבר ראשון לרשימה הערך של הפרמטר pצריך להיות .null
//הנחות – הרשימה אותחלה ,החוליה pקיימת ברשימה
)public Node<T> Remove(Node<T> p
//הפעולה מוציאה את החוליה pמהרשימה ומחזירה את החוליה הבאה אחריה אם הוצאה
החוליה האחרונה ברשימה הפעולה תחזיר null
//הנחות – הרשימה אותחלה ,החוליה pקיימת ברשימה
רשימה -בניית רשימה
3
בניית רשימה -תבנית
אופן הוספת חוליה לרשימה
באופן סְ כֵמַ טי ,מוסיפים חוליה חדשה עם ערך
חדש ,אחרי מיקום חוליה מסוימת.
+
רשימה -פעולות הממשק וסריקת רשימה
4
2
ט'/טבת/תשע"ה
בניית רשימה -תבנית
אופן בניית רשימה:
הגדרת רשימה חדשה
;)(>List<int> l_new = new List<int
הגדרת חוליה והצבת תחילת הרשימה החדשה בה
;)(Node<int> p_new = l_new.GetFirst
הכנסת ערכים לרשימה החדשה בתוך לולאה
הוספת ערך לרשימה (מחזירה את המיקום אחריו נוסף הערך =
החוליה החדשה) תוך כדיי קידום החוליה
;)p_new = l_new.Insert(p_new, x_new
5
רשימה -בניית רשימה
בניית רשימה -דוגמה
)(static List<int> SetList
{
//מחזירה רשימה של 50מספרים שלמים אקראיים בין 1-10
;)(>List<int> l_new = new List<int
;)(Random rnd = new Random
;)(Node<int> p_new = l_new.GetFirst
)for (int i = 0; i < 50; i++
{
;))p_new = l_new.Insert(p_new, rnd.Next(1, 11
}
;return l_new
}
רשימה -בניית רשימה
6
3
ט'/טבת/תשע"ה
בניית רשימה – תרגיל 1
כתבו פעולה המחזירה רשימה של מספרים ממשיים הכוללת את כל המספרים החד ספרתיים לפני
ואחרי הנקודה (למשל )3.2להם ספרת העשיריות אינה גדולה מספרת האחדות.
פתרון
טיוטה
פעולת עזר – בדיקה עבור מספר בודד האם עונה לתנאי
פעולה עיקרית – מעבר על כלל המספרים 1.0-9.9והכנסה של אלו העונים לתנאי לרשימה
פעולת העזר
)static bool IsNumberOk(double num_d
{
//מחזירה האם למספר ספרת העשיריות אינה גדולה מספרת האחדות
;int ones = (int)(num_d) % 10
;int tenthses = (int)(num_d * 10) % 10
;)return !(tenthses > ones
}
7
רשימה -בניית רשימה
בניית רשימה – תרגיל 1
הפעולה העיקרית
)(static List<double> SetDoubleList
{
//מחזירה רשימה של כל המספרים הממשיים 1-9עם ספרה אחת אחרי הנקודה (עשיריות)
;)(>List<double> l_new = new List<double
;)(Node<double> p_new = l_new.GetFirst
//מעבר על כלל המספרים -בדיקה והוספת המתאימים
)for (double i = 1.0; i <= 9.9; i += 0.1
{
))if (IsNumberOk(i
;)p_new = l_new.Insert(p_new, i
;} return l_new
רשימה -בניית רשימה
8
}
4
תשע"ה/טבת/'ט
2 בניית רשימה – תרגיל
.כתבו פעולה המחזירה רשימה הכוללת את המספרים שאינם שליליים מתוך הרשימה המתקבלת
פתרון
static List<int> List2List_NonNegative(List<int> l)
{
מחזירה רשימה הכוללת את המספרים שאינם שליליים בלבד מתוך הרשימה המתקבלת//
List<int> l_new = new List<int>(); Node<int> p_new = l_new.GetFirst();
Node<int> p = l.GetFirst(); int x;
while (p != null)
{
x = p.GetInfo();
if (x > 0)
p_new = l_new.Insert(p_new, x);
p = p.GetNext();
}
return l_new;
}
5
9
בניית רשימה- רשימה
© Copyright 2025