Stack vs Queue
Stack یک لیست مرتب شده است که در آن درج و حذف آیتم های لیست فقط در یک انتهای به نام بالا قابل انجام است. به همین دلیل، پشته به عنوان ساختار داده Last in First Out (LIFO) در نظر گرفته می شود. صف نیز یک لیست مرتب شده است که در آن درج آیتم های لیست در یک سر به نام عقب و حذف آیتم ها در سر دیگر به نام جلو انجام می شود. این مکانیسم درج و حذف، صف را به یک ساختار داده First in First out (FIFO) تبدیل می کند.
Stack چیست؟
همانطور که قبلا ذکر شد، پشته یک ساختار داده است که در آن عناصر تنها از یک انتهای به نام بالا اضافه و حذف می شوند.پشته ها فقط دو عملیات اساسی به نام های فشار و پاپ را امکان پذیر می کنند. عملیات فشار یک عنصر جدید به بالای پشته اضافه می کند. عملیات pop یک عنصر را از بالای پشته حذف می کند. اگر پشته از قبل پر باشد، هنگامی که یک عملیات فشار انجام می شود، به عنوان سرریز پشته در نظر گرفته می شود. اگر یک عملیات پاپ روی یک پشته از قبل خالی انجام شود، به عنوان یک زیر جریان پشته در نظر گرفته می شود. با توجه به تعداد کم عملیاتی که می توان روی یک پشته انجام داد، به عنوان یک ساختار داده محدود در نظر گرفته می شود. علاوه بر این، با توجه به نحوه تعریف عملیات فشار و پاپ، مشخص است که عناصری که در آخر به پشته اضافه شده اند، ابتدا از پشته خارج می شوند. بنابراین پشته به عنوان یک ساختار داده LIFO در نظر گرفته می شود.
Queue چیست؟
در یک صف، عناصر از پشت صف اضافه شده و از جلوی صف حذف می شوند. از آنجایی که عناصری که ابتدا اضافه می شوند ابتدا از صف حذف می شوند، ترتیب FIFO را حفظ می کند. با توجه به این ترتیب افزودن و حذف عناصر، صف نشان دهنده ایده خط پرداخت است. عملیات عمومی که توسط یک صف پشتیبانی می شوند، عملیات en-queue و de-queue هستند. عملیات En-queue یک عنصر را در پشت صف اضافه می کند، در حالی که عملیات de-queue یک عنصر را از جلوی صف حذف می کند. به طور کلی، صف ها محدودیتی در تعداد عناصری که می توانند به صف اضافه شوند علاوه بر محدودیت های حافظه، ندارند.
تفاوت بین Stack و Queue چیست؟
حتی اگر هم پشته ها و هم صف ها از انواع لیست های مرتب شده هستند، تفاوت های مهمی با هم دارند. در پشته ها، افزودن یا حذف آیتم ها فقط از یک سر به نام بالا امکان پذیر است، در حالی که در صف ها، افزودن آیتم ها از یک سر به نام عقب و حذف آیتم ها از سر دیگر به نام جلو انجام می شود.در یک پشته، مواردی که آخرین بار به پشته اضافه می شوند، ابتدا از پشته حذف می شوند. بنابراین پشته به عنوان یک ساختار داده LIFO در نظر گرفته می شود. در صف ها، مواردی که ابتدا اضافه می شوند، ابتدا از صف حذف می شوند. بنابراین صف به عنوان یک ساختار داده FIFO در نظر گرفته می شود.
لینک مرتبط:
تفاوت بین پشته و هیپ