Stack vs Queue
מחסנית היא רשימה מסודרת שבה הוספה ומחיקה של פריטי רשימה יכולה להתבצע רק בקצה אחד הנקרא העליון. מסיבה זו, מחסנית נחשבת למבנה נתונים אחרון בחוץ (LIFO). תור היא גם רשימה מסודרת שבה הכנסת פריטי רשימה נעשית בקצה אחד הנקרא אחורי, ומחיקת הפריטים נעשית בקצה השני הנקרא חזית. מנגנון הוספה ומחיקה זה הופך את התור למבנה נתונים First in First Out (FIFO).
מה זה Stack?
כפי שהוזכר קודם לכן, מחסנית היא מבנה נתונים שבו מוסיפים ומוסרים אלמנטים רק מקצה אחד הנקרא העליון.ערימות מאפשרות רק שתי פעולות בסיסיות הנקראות דחיפה ופופ. פעולת הדחיפה מוסיפה אלמנט חדש לראש הערימה. פעולת הפופ מסירה אלמנט מהחלק העליון של הערימה. אם המחסנית כבר מלאה, כאשר מבוצעת פעולת דחיפה, היא נחשבת כהצפת מחסנית. אם פעולת פופ מבוצעת על מחסנית שכבר ריקה, היא נחשבת כזרימת מחסנית. בשל המספר הקטן של פעולות שניתן לבצע על מחסנית, זה נחשב למבנה נתונים מוגבל. בנוסף, לפי האופן שבו מוגדרות פעולות הדחיפה והפופ, ברור שאלמנטים שנוספו אחרונים לערימה יוצאים ראשונים מהערימה. לכן מחסנית נחשבת כמבנה נתונים של LIFO.
מהו תור?
בתור, אלמנטים מתווספים מחלקו האחורי של התור ומוסרים מחזית התור. מכיוון שהאלמנטים שנוספו ראשונים יוסרו תחילה מהתור, הוא שומר על סדר ה-FIFO. בשל סדר זה של הוספה והסרה של אלמנטים, תור מייצג את הרעיון של קו קופה. פעולות כלליות הנתמכות על ידי תור הן פעולות של תור וביטול תור. פעולת En-queue תוסיף אלמנט בחלק האחורי של התור, בעוד פעולת ביטול התור מסירה אלמנט מחזית התור. באופן כללי, לתורים אין הגבלה על מספר האלמנטים שניתן להוסיף לתור מלבד אילוצי הזיכרון.
מה ההבדל בין Stack ו-Queue?
למרות שגם הערימות וגם התורים הם סוגים של רשימות מסודרות, יש להם כמה הבדלים חשובים. בערימות, הוספה או מחיקה של פריטים יכולה להתבצע רק מקצה אחד שנקרא העליון, בעוד שבתורים הוספת פריטים מתבצעת מקצה אחד שנקרא אחורי ומחיקת פריטים נעשית מהקצה השני הנקרא חזית.בערימה, פריטים שנוספו אחרונים לערימה יוסרו תחילה מהערימה. לכן מחסנית נחשבת כמבנה נתונים של LIFO. בתורים, פריטים שנוספו ראשונים יוסרו תחילה מהתור. לכן התור נחשב כמבנה נתונים של FIFO.
קישור קשור:
הבדל בין ערימה לערימה