Stack vs Heap
Stack یک لیست مرتب شده است که در آن درج و حذف آیتم های لیست فقط در یک انتهای به نام بالا قابل انجام است. به همین دلیل، پشته به عنوان ساختار داده Last in First Out (LIFO) در نظر گرفته می شود. Heap یک ساختار داده خاص است که بر پایه درختان است و ویژگی خاصی به نام ویژگی heap را برآورده می کند. همچنین، هیپ یک درخت کامل است، به این معنی که هیچ شکافی بین برگهای درخت وجود ندارد، یعنی در یک درخت کامل، قبل از افزودن یک سطح جدید به درخت، هر سطح پر میشود و گرهها در یک سطح معین از آن پر میشوند. از چپ به راست.
Stack چیست؟
همانطور که قبلا ذکر شد، پشته یک ساختار داده است که در آن عناصر تنها از یک انتهای به نام بالا اضافه و حذف می شوند.پشته ها فقط دو عملیات اساسی به نام های فشار و پاپ را امکان پذیر می کنند. عملیات فشار یک عنصر جدید به بالای پشته اضافه می کند. عملیات pop یک عنصر را از بالای پشته حذف می کند. اگر پشته از قبل پر باشد، هنگامی که یک عملیات فشار انجام می شود، به عنوان سرریز پشته در نظر گرفته می شود. اگر یک عملیات پاپ روی یک پشته از قبل خالی انجام شود، به عنوان یک زیر جریان پشته در نظر گرفته می شود. با توجه به تعداد کم عملیاتی که می توان روی یک پشته انجام داد، به عنوان یک ساختار داده محدود در نظر گرفته می شود. علاوه بر این، با توجه به نحوه تعریف عملیات فشار و پاپ، مشخص است که عناصری که در آخر به پشته اضافه شده اند، ابتدا از پشته خارج می شوند. بنابراین پشته به عنوان یک ساختار داده LIFO در نظر گرفته می شود.
Heap چیست؟
همانطور که قبلا ذکر شد، heap یک درخت کامل است که خاصیت heap را برآورده می کند.ویژگی Heap بیان می کند که اگر y یک گره فرزند x باشد، مقدار ذخیره شده در گره x باید بزرگتر یا مساوی با مقدار ذخیره شده در گره y باشد (یعنی مقدار(x) ≥ مقدار(y)). این ویژگی نشان می دهد که گره با بیشترین مقدار همیشه در ریشه قرار می گیرد. پشته ای که با استفاده از این ویژگی ساخته می شود، max-heap نامیده می شود. تغییر دیگری از ویژگی heap وجود دارد که برعکس آن را بیان می کند. (یعنی مقدار(x) ≤ مقدار(y)). این بدان معناست که گره با کمترین مقدار همیشه در ریشه قرار می گیرد، بنابراین min-heap نامیده می شود. طیف گسترده ای از عملیات انجام شده بر روی پشته ها وجود دارد مانند یافتن حداقل (در کمترین هپ) یا حداکثر (در حداکثر هپ)، حذف حداقل (در حداقل هپ) یا حداکثر (در حداکثر هپ)، افزایش (در حداکثر هپ) کلید -heaps) یا کاهش (به تعداد کم) کلید، و غیره.
تفاوت بین Stack و Heap چیست؟
تفاوت اصلی بین پشته ها و پشته ها این است که در حالی که پشته یک ساختار داده خطی است، هیپ یک ساختار داده غیر خطی است.پشته یک لیست مرتب شده است که از ویژگی LIFO پیروی می کند، در حالی که heap یک درخت کامل است که از ویژگی heap پیروی می کند. علاوه بر این، پشته یک ساختار داده محدود است که تنها از تعداد محدودی از عملیات به عنوان push و pop پشتیبانی می کند، در حالی که heap از طیف گسترده ای از عملیات مانند یافتن و حذف حداقل یا حداکثر، افزایش یا کاهش کلید و ادغام پشتیبانی می کند.