public T Get Value return value public void
פעולות נוספות במחלקה public T Get. Value() { return value; } public void Set. Value(T x) { value = x; } value public Node<T> Get. Next() { return next; } public void Set. Next(Node<T> x) { next = x; } public bool Has. Next() { return next != null; } public override string To. String() {return value. To. String(); } 9 next
public static int Max(Node<int> p) { נתייחס לערך שלו – על איזו חוליה הוא P במקרה זה בעמודה של 1. int x = int. Min. Value; . מצביע 2. while (p != null) { 2. 1 x = Math. Max(x, p. Get. Value()); 2. 2 p = p. Get. Next(); P P } שורה P while x return 3. return x; 1 p->4 מינימום } 2 T מעקב אחרי פעולה 13 2. 1 2. 2 p->7 2 2. 1 2. 2 p->3 2 2. 1 2. 2 p-> null 2 3 4 T 7 F 7
public static Node<int> Add(Node<int> lst, Node<int>after, int num) { if (lst == null) return new Node<int>(num); if(after==null) return new Node<int>(num, lst); after. Set. Next(new Node<int>(num, after. Get. Next())); return lst; } הקריאה לפעולה Node<int> lst = null; lst = Add(lst, 5); lst = Add(lst, null, 2); Node<int> after = Get. Last(lst); lst = Add(lst, after, 8); lst after = Find. Node(lst, 2); lst = Add(lst, after, 6); 20 lst 2 6 5 lst 2 2 8 5 5 8
– הוספת החוליה החדשה כחוליה 1 • אפשרות ראשונה public Node<int> Build 1() { Node<int> lst=null; for(int i=1; i<=10; i++) lst = new Node<int>(i, lst); return lst; } lst 22 next value // null 321 4 3 . כבר בשלב זה רואים כי הסדר הפוך ? ומה הפתרון ? בלי להפוך את הלולאה value next // 21 null 2 1 value // 1 next null //
public static Node<int> New. Zugi(Node<int> chain) { Node<int> first = null; הפניות לשרשרת החדשה Node<int>last=null; while (chain != null) לולאה לסריקת השרשרת המקורית { if (chain. Get. Value() % 2 == 0) תנאי לביצוע ההוספה { if (first == null) אם השרשרת ריקה תבנית { first = new Node<int>(chain. Get. Value()); להוספת last. Node<int>(chain. Get. Value(), first); = first; } first = new חוליות else אם השרשרת לא ריקה בתחילת בסוף { last. Set. Next(new Node<int>(chain. Get. Value())); השרשרת last=last. Get. Next(); } קידום לחוליה האחרונה } chain = chain. Get. Next(); קידום על השרשרת המקורית } return first; החזרת השרשרת החדשה } 25
- Slides: 30