חומרי לימוד - מדעי המחשב
Transcription
חומרי לימוד - מדעי המחשב
י"ח/כסלו/תשע"ה מימוש של תור לצורך המימוש של טנ"מ תור ,נשתמש בטנ"מ עזר -חוליה תור -פעולות הממשק סריקה ובנייה 1 טנ"מ חוליה -ממשק לטנ"מ חוליה – - Nodeשתי תכונות: הערך השמור בתוכה – .info החוליה הבאה לאחריה – nextמסוג >Node<T תיאור סְ כֵמַ טי של חוליה בפועל נראה יותר כמו next next next next תור -פעולות הממשק סריקה ובנייה 2 1 י"ח/כסלו/תשע"ה טנ"מ חוליה -ממשק פעולות הממשק בנאים )Node(T info //הפעולה בונה ומחזירה חוליה שהערך שלה הוא ,infoאין לה חוליה עוקבת )Node(T info, Node<T> next //הפעולה בונה ומחזירה חוליה ,שהערך שלה הוא ,infoוהחוליה העוקבת לה היא החוליה next ToString )(ToString //הפעולה מחזירה מחרוזת המתארת את החוליה הנוכחית 3 תור -פעולות הממשק סריקה ובנייה טנ"מ חוליה -ממשק Get )(T GetInfo //הפעולה מחזירה את הערך של החוליה הנוכחית )(Node<T> GetNext //הפעולה מחזירה את החוליה העוקבת לחוליה הנוכחית Set )SetInfo(T info //הפעולה קובעת את ערך החוליה הנוכחית להיות info )SetNext(Node<T> next //הפעולה קובעת את החוליה העוקבת לחוליה הנוכחית להיות החוליה next תור -פעולות הממשק סריקה ובנייה 4 2 י"ח/כסלו/תשע"ה טנ"מ חוליה -מימוש >public class Node<T { //התכונות ;private T info ;private Node<T> next //בנאים )public Node(T info } //הפעולה בונה ומחזירה חוליה שהערך שלה הוא infoואין לה חוליה עוקבת ;this.info = info ;this.next = null { )public Node(T info, Node<T> next } //הפעולה בונה ומחזירה חוליה ,שהערך שלה הוא infoוהחוליה העוקבת לה היא החוליה next ;this.info = info ;this.next = next { 5 תור -פעולות הממשק סריקה ובנייה טנ"מ חוליה -מימוש //Get )(public T GetInfo { //הפעולה מחזירה את הערך של החוליה הנוכחית ;return info { )(public Node<T> GetNext } //הפעולה מחזירה את החוליה העוקבת לחוליה הנוכחית ;return next { תור -פעולות הממשק סריקה ובנייה 6 3 י"ח/כסלו/תשע"ה טנ"מ חוליה -מימוש //Set )public void SetInfo(T info } //הפעולה קובעת את ערך החוליה הנוכחית להיות info ;this.info = info { )public void SetNext(Node<T> next } //הפעולה קובעת את החוליה העוקבת לחוליה הנוכחית להיות החוליה next ;this.next = next } 7 תור -פעולות הממשק סריקה ובנייה טנ"מ חוליה -מימוש //ToString )(public override string ToString } //הפעולה מחזירה מחרוזת המתארת את החוליה הנוכחית ;)(return this.info.ToString } תור -פעולות הממשק סריקה ובנייה 8 4 י"ח/כסלו/תשע"ה טנ"מ תור -מימוש תיאור סְ כֵמַ טי של תור חוליות חוליה יציאה Out next info next info next info next info next info next info first כניסה last In 9 תור -פעולות הממשק סריקה ובנייה טנ"מ תור -מימוש תיאור סְ כֵמַ טי של תור חוליות חוליה תור עם ערך בודד תור ריק יציאה Out || null info כניסה יציאה first last next Out info info first last info info In || null כניסה תור -פעולות הממשק סריקה ובנייה In 10 5 תשע"ה/כסלו/י"ח מימוש- טנ"מ תור first public class Queue<T> { info next התכונות// private Node<T> first; last private Node<T> last; info next בנאי// public Queue() { מחזירה תור ריק// תור ריק this.first = null; this.last = null; Out first last } יציאה info null || info כניסה In 11 פעולות הממשק סריקה ובנייה- תור מימוש- טנ"מ תור הוספה public void Insert(T x) } התור אותחל- הנחה, לסוף התורx מכניסה את הערך// temp Node<T> temp = new Node<T>(x); info if (first == null) first = temp; null else Out last.SetNext(temp); next first יציאה info next info next info next info next info next X ?תור ריק first == null √ Out first last תור ריק || null info last = temp; יציאה info In כניסה { X last last info next temp Out first last info info תור עם ערך בודד יציאה ne xt info In כניסה || null In 12 6 פעולות הממשק סריקה ובנייה- תור כניסה י"ח/כסלו/תשע"ה טנ"מ תור -מימוש מחיקה )(public T Remove } //מוציאה ומחזירה את הערך הנמצא בראש התור ,הנחה -התור אותחל ואינו ריק תור עם ערך בודד יציאה next √ Out info info first last רק אחד בתור? first == null X info || null תור ריק כניסה In יציאה Out ||info null כניסה ;)(T x = first.GetInfo first last ;)(first = first.GetNext )if (first == null יציאה Out next info first next info first next info next info next info כניסה X ;last = null ;return x { last In info In 13 תור -פעולות הממשק סריקה ובנייה טנ"מ תור -מימוש הצצה -ראש התור )(public T Head } //מחזירה את הערך הנמצא בראש התור //הנחה -התור אותחל ואינו ריק ;)(return first.GetInfo { האם ריק )(public bool IsEmpty } //מחזירה האם התור ריק //הנחה -התור אותחל ;return first == null { תור -פעולות הממשק סריקה ובנייה 14 7 תשע"ה/כסלו/י"ח מימוש- טנ"מ תור תוכן התור 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; { 15 8 פעולות הממשק סריקה ובנייה- תור