Стек проти Хіпа
Стек - це упорядкований список, у якому вставлення та видалення елементів списку можна робити лише в одному кінці, що називається вгорі. З цієї причини стек розглядається як структура даних Last in First out (LIFO). Heap - це особлива структура даних, заснована на деревах, і вона задовольняє особливій властивості, яка називається властивістю heap. Також купа - це ціле дерево, що означає, що між листям дерева немає проміжків, тобто в повному дереві заповнюється кожен рівень перед додаванням нового рівня до дерева, а вузли на заданому рівні заповнюються з зліва направо.
Що таке стек?
Як було сказано раніше, стек - це структура даних, в яку елементи додаються та вилучаються лише з одного кінця, який називається вершиною. Стек дозволяє лише дві основні операції, що називаються push і pop. Операція натискання додає новий елемент у верхню частину стека. Поп-операція видаляє елемент з верхньої частини стека. Якщо стек вже заповнений, під час операції натискання він вважається переповненням стека. Якщо поп-операція виконується у вже порожній стеці, вона вважається потоком стеку. Через малу кількість операцій, які можна було б виконати на стеці, вона розглядається як обмежена структура даних. Крім того, згідно з тим, як визначені операції push і pop, зрозуміло, що елементи, які були додані останніми до стеку, виходять із стеку першими. Тому стек розглядається як структура даних LIFO.
Що таке купа?
Як було сказано раніше, купа - це ціле дерево, яке задовольняє властивість купи. Властивість Heap зазначає, що якщо y - дочірній вузол x, то значення, збережене у вузлі x, повинно бути більше або рівне значенню, збереженому у вузлі y (тобто значення (x) ≥ значення (y)). Це властивість означає, що вузол з найбільшим значенням завжди розміщувався б у корені. Купа, побудована за допомогою цієї властивості, називається max-heap. Існує ще одна зміна властивості купи, яка визначає зворотне значення цього. (тобто значення (x) ≤ значення (y)). Це означає, що вузол з найменшим значенням завжди буде розміщений у корені, таким чином, називається min-heap. Існує широкий спектр операцій, що виконуються на купи, такі як знаходження мінімуму (у min-купи) або максимального (у max-купи), видалення мінімального (у min-купи) або максимального (у max-купи), збільшення (у max -хепа) або зменшувальна (у хвилинах купи) клавіша тощо.
Яка різниця між Stack та Heap?
Основна відмінність стеків і купи полягає в тому, що, поки стек є лінійною структурою даних, купа - це нелінійна структура даних. Стек - це упорядкований список, який слід за властивістю LIFO, тоді як купа - це повне дерево, яке слід за властивістю купи. Крім того, стек - це обмежена структура даних, яка підтримує лише обмежену кількість операцій, як push і pop, в той час як купа підтримує широкий спектр операцій, таких як пошук і видалення мінімуму або максимуму, збільшення або зменшення ключа та об'єднання.