א'/שבט/תשע"ה
מימוש של רשימה
לצורך המימוש של טנ"מ רשימה ,נשתמש בטנ"מ חוליה
(לא נחזור עליו כאן)
1
רשימה -מימוש
טנ"מ רשימה -מימוש
תיאור סְ כֵמַ טי של רשימת חוליות
next
info
next
info
next
info
next
info
next
info
first
רשימה -מימוש
2
1
א'/שבט/תשע"ה
טנ"מ רשימה -מימוש
תיאור סְ כֵמַ טי של רשימה חוליות חוליה
רשימה עם ערך בודד
רשימה ריקה
|| null
info
|| null
next
info
info
first
first
3
רשימה -מימוש
טנ"מ רשימה -מימוש
>public class List<T
{
//התכונה
;private Node<T> first
//בנאי
רשימה ריקה
//מחזירה רשימה ריקה
)(public List
{
|| info
null
first
;this.first = null
}
)(public Node<T> GetFirst
{
//הפעולה מחזירה את החוליה הראשונה ברשימה אם הרשימה ריקה הפעולה מחזירה null
;return first
}
רשימה -מימוש
4
2
א'/שבט/תשע"ה
טנ"מ רשימה – מימוש -הוספה
מוסיפה את הערך xלרשימה lאחרי המיקום p
אחרי הפעולה ברשימה ערך אחד יותר ממספר ערכים שהיו
לפני הפעולה
אחרי
הפעולה
1, 3, x, 2, 6, 8
1, 3, 2, 6, 8
p
p
ראשון
ראשון
5
רשימה -מימוש
טנ"מ רשימה – מימוש -הוספה
)public void Insert(Node<T> p, T info
}
//הפעולה מכניסה לרשימה חוליה חדשה שהערך שלה הוא infoאחרי החוליה pהפעולה מחזירה את החוליה החדשה
שהוכנסה .כדי להכניס איבר ראשון לרשימה הערך של הפרמטר pצריך להיות null.הנחה :החוליה nextקיימת
ברשימה ,והרשימה אותחלה
עבור המקרה p == null -
(להוסיף לפני הראשון)
p_new
;)Node<T> p_new = new Node<T>(info
)if (p == null
{
;)p_new.SetNext(first
first
;first = p_new
}
first
else
{
;))(p_new.SetNext(p.GetNext
;)p.SetNext(p_new
}
{
רשימה -מימוש
6
3
א'/שבט/תשע"ה
טנ"מ רשימה – מימוש -הוספה
)public void Insert(Node<T> p, T info
}
//הפעולה מכניסה לרשימה חוליה חדשה שהערך שלה הוא infoאחרי החוליה pהפעולה מחזירה את החוליה החדשה
שהוכנסה .כדי להכניס איבר ראשון לרשימה הערך של הפרמטר pצריך להיות null.הנחה :החוליה nextקיימת
ברשימה ,והרשימה אותחלה
עבור המקרה p != null -
(להוסיף לא לפני הראשון)
;)Node<T> p_new = new Node<T>(info
)if (p == null
{
;)p_new.SetNext(first
;first = p_new
}
p
first
else
{
;))(p_new.SetNext(p.GetNext
p_new
;)p.SetNext(p_new
}
{
7
רשימה -מימוש
טנ"מ רשימה – מימוש -מחיקה
מוחקת מהרשימה lאת הערך במיקום p
אחרי הפעולה ברשימה ערך אחד פחות ממספר ערכים שהיו
לפני הפעולה p ,יהיה המיקום העוקב למה שהיה לפני
הפעולה
1, 2, 6, 8
סוף
p
עוגן
רשימה -מימוש
אחרי
הפעולה
1, 3, 2, 6, 8
סוף
p
עוגן
8
4
א'/שבט/תשע"ה
טנ"מ רשימה – מימוש -מחיקה
)public Node<T> Remove(Node<T> p
}
//הפעולה מוציאה את החוליה pמהרשימה ומחזירה את החוליה הבאה אחריה אם הוצאה החוליה האחרונה ברשימה
הפעולה תחזיר .nullהנחה החוליה pקיימת ברשימה והרשימה אותחלה
)if (first == p
עבור המקרה first == p -
(למחוק את הראשון)
{
;)(first = p.GetNext
;return first
}
else
first
first
{
;Node<T> prev = first
)while (prev.GetNext() != p
;)(prev = prev.GetNext
;))(prev.SetNext(p.GetNext
;)(return prev.GetNext
}
{
9
רשימה -מימוש
טנ"מ רשימה – מימוש -מחיקה
)public Node<T> Remove(Node<T> p
}
//הפעולה מוציאה את החוליה pמהרשימה ומחזירה את החוליה הבאה אחריה אם הוצאה החוליה האחרונה ברשימה
הפעולה תחזיר .nullהנחה החוליה pקיימת ברשימה והרשימה אותחלה
)if (first == p
עבור המקרה first =! p -
(למחוק לא את הראשון)
{
;)(first = p.GetNext
;return first
}
else
p
prev
prev
first
{
;Node<T> prev = first
)while (prev.GetNext() != p
;)(prev = prev.GetNext
;))(prev.SetNext(p.GetNext
;)(return prev.GetNext
}
{
רשימה -מימוש
10
5
תשע"ה/שבט/'א
טנ"מ רשימה – מימוש – המשך
האם ריק
public bool IsEmpty()
}
הרשימה אותחלה- הנחה. מחזירה האם הרשימה ריקה//
return first == null;
{
public override string ToString()
{
הנחה – הרשימה אותחלה,הפעולה מחזירה מחרוזת המתארת את הרשימה//
string s = "["; Node<T> p = this.first;
while (p != null) {
s = s + p.GetInfo().ToString();
if (p.GetNext() != null) s = s + ",";
p = p.GetNext();}
s = s + "]";
return s; }
11
6
מימוש- רשימה
© Copyright 2025