תור - Queue<T>
תור הוא מבנה נתונים שמיועד לאחסן אובייקטים בסדר שבו הם נכנסים. הוא פועל בשיטת FIFO - First In, First Out: האובייקט שנכנס ראשון הוא גם זה שיוצא ראשון.
תכונות עיקריות
האיבר הראשון שנכנס לתור יוצא ראשון. התור דינמי: אפשר להסיר איברים מראש התור ולהכניס איברים לסופו.

פעולות במחלקה
- Queue() - פעולה הבונה תור חדש וריק.
- Insert(T value) - מקבלת איבר ומכניסה אותו לסוף התור.
- Remove() - מסירה את האיבר מראש התור ומחזירה אותו.
- Head() - מחזירה את האיבר שבראש התור, ללא הסרתו.
- IsEmpty() - מחזירה true אם התור ריק, ו-false אחרת.
שימוש וסריקה
כדי לקבל את האיבר הבא בתור יש להוציא את האיבר הראשון. ללא שינוי התור אפשר לגשת בכל פעם לאיבר שבראשו בלבד.
בדרך כלל לא ידוע מספר האיברים בתור, ולכן נשתמש בלולאת while. תנאי הלולאה הוא while (!q.IsEmpty()), כאשר q מייצג את התור. ממשיכים כל עוד התור אינו ריק, כי כדי לגשת לאיבר הבא צריך להסיר את הקודם.
שמירה על התור המקורי
לשמירה על מבנה הנתונים נשתמש בתור עזר, שאליו נעביר את האיברים בעת הוצאתם מהתור המקורי. לאחר ריקון התור המקורי נחזיר אליו את כל האיברים מתור העזר.
האיברים חוזרים בסדר המקורי בתנאי שמרוקנים תחילה את כל התור ורק לאחר מכן מחזירים את האיברים. אם מסירים חלק מהאיברים ומחזירים אותם, הסדר משתנה. לכן גם אם מצאנו את מבוקשנו, נסיים את הסריקה ונחזיר את כל האיברים יחד.
דוגמה: העברה לתור עזר
