public static int MaxSumPair (Stack<int> s)
public static int MaxCupel (Stack<int> st1, Stack<int> st2)
while (!st1.IsEmpty() && (a+b)<=sum)
public static int Size (Stack<int> st)
Stack<int> tmp = new Stack<int>();
public static int SizeQ (Queue<int> qu)
Queue<int> tmp = new Queue<int>();
public static int SizeQOption2 (Queue<int> qu)
public static bool IsExist (Queue<int> qu, int num)
Queue<int> tmp = new Queue<int>();
public static void Main (string[] args)
Queue<int> qu = new Queue<int>();
Console.WriteLine ("before: " + qu.ToString());
Console.WriteLine("size = " + SizeQOption2(qu));
Console.WriteLine ("after: " + qu.ToString());
הכנסה של איברים נעשית רק בסוף התור (כל איבר חדש מוכנס לתור אחרי האיבר הקודם שהוכנס, כלומר סדר הכנסת האיברים לתור נשמר כל הזמן),
והוצאה של איברים נעשית רק מראש התור.
שיטת הניהול של ההכנסה וההוצאה מתור נקראת שיטת
כלומר, הראשון שנכנס הוא גם הראשון שיוצא
התור (בדומה למחסנית, ולשרשרת חוליות) אינו מוגבל בזיכרון המוקצה עבור איבריו.
כלומר, הקצאת השטח שלו מאפשרת כמה שנרצה להוסיף איברים, ולהוציא איברים מהתור.
תור שאין בו איברים הוא תור ריק.
בתור אין אפשרות גישה לאיברים בתוכו - ניתן לגשת רק אל האיבר המופיע בראשו.
כדי להגיע אל האיבר הנמצא בתוך התור יש להוציא תחילה את כל האיברים הנמצאים לפניו.
מאחר וניתנת גישה רק לראש התור, סריקה של תור יכולה להתבצע בשני אופנים:
-ע"י הוצאה של כל הערכים של התור,
ולכן תהייה כרוכה בשלב הראשון בשימוש במבנה עזר לצורך שמירת הערכים שמוציאים מן התור,
ובשלב שני בהעברה של הערכים ממבנה העזר חזרה אל התור המקורי.
-ע"י "גלגול" של איברי התור,
כלומר האיבר בראש התור יוצא ונכנס לסוף התור.
מהלך זה חוזר על עצמו עד שהאיבר שהיה בראש התור חוזר להופיע שוב בראש התור.
הערה: ברוב המקרים נרצה לשמור על התור המקורי!
דוגמה לתור של מספרים שלמים:
סוף התור - הכנסה ראש התור - הוצאה
<----- 25 10 20 50 5 -8 35 <-----
מייצגת את מבנה הנתונים תור שהערכים בו הם מטיפוס
(מחלקה גנרית, כלומר כללית)
הפעולות המוגדרות על תור הן:
הוצאת איבר (מראש התור, והחזרת ערכו)
הצצה לאיבר הנמצא בראש התור והחזרת ערכו מבלי להוציאו (לאחר פעולה זו התור נשאר ללא שינוי, להבדיל מפעולת הוצאת איבר מתור)
בנוסף, קיימת פעולה בונה תור, פעולה המחזירה אמת אם התור ריק אחרת שקר, ופעולה המחזירה מחרוזת המתארת את איברי התור (מראשה ועד סופה)
הערה חשובה: לפני שימוש בפעולות של הוצאת איבר ו/או הצצה לראש התור,
חובה לבדוק תחילה האם התור אינו ריק.
אך ורק במידה והתור אינו ריק, נוכל לבצע פעולות אלו.
ניסיון גישה למבנה נתונים ריק לשם הוצאת איבר או הצצה לראש המבנה הוא שגיאה!!!
נראה כעת ממשק של המחלקה תור.
כתוב פעולה ראשית אשר מגדירה ובונה תור של מספרים שלמים.
הפעולה תכניס לתור את האיברים הבאים (משמאל לימין):
כלומר, האיבר בראש התור יהיה 10, והאיבר בסוף התור יהיה 90.
public Node (T value, Node<T> next)
public void SetValue (T value)
public void SetNext(Node<T> next)
return this.next != null;
public override String ToString()
return this.value.ToString();
this.first=new Node<T> (x,this.first);
T x=this.first.GetValue();
this.first=this.first.GetNext();
return this.first.GetValue();
public override String ToString()
Node<T> pos = this.first;
str=str+pos.GetValue().ToString();
Node<T> temp = new Node<T>(x);
T x=this.first.GetValue();
this.first=this.first.GetNext();
return this.first.GetValue();
public override String ToString ()
Node<T> pos = this.first;
str=str+pos.GetValue().ToString();
private BinNode<T> right;
public BinNode (BinNode<T> left, T x, BinNode<T> right)
public BinNode<T> GetLeft()
public BinNode<T> GetRight()
public void SetValue(T x)
public void SetLeft(BinNode<T> left)
public void SetRight(BinNode<T> right)
public override String ToString ()
return this.value.ToString();