Яка різниця між стеком і чергою в C++?
Основна відмінність між структурами даних стека та черги полягає в тому Стек відповідає LIFO, тоді як Черга слідує за типом структури даних FIFO. LIFO означає «останній прийшов, перший вийшов». Це означає, що коли ми поміщаємо дані в стек, він спочатку обробляє останній запис. І навпаки, FIFO означає «першим прийшов, першим вийшов».
Стеки відповідають принципу LIFO і використовуються для зворотного відстеження, керування викликами функцій та оцінки виразів. Черги дотримуються принципу FIFO і використовуються для планування завдань, керування ресурсами та алгоритмів пошуку в ширину.
Стеки використовуються для кнопок скасування в різних програмах. Більшість останніх змін надсилається до стеку. Навіть кнопка «Назад» у веб-переглядачі працює за допомогою стека, куди вставляються всі нещодавно відвідані веб-сторінки. Черги використовуються у випадку принтерів або завантаження зображень.
Черга завжди базується на FIFO. Список може базуватися на FIFO або LIFO тощо. Черга має два покажчики FRONT і REAR. У той час як List має лише один покажчик, який в основному називається HEAD.
Підхід:
- Займіть єдину чергу.
- push(x): помістити елемент у чергу.
- Використовуйте цикл for із розміром ()-1, вилучайте елемент із черги та знову повертайте до черги, отже, останній елемент стає останнім і навпаки.
- pop(): видалити елемент із черги.
Принцип упорядкування Стек дотримується принципу «Останній прийшов, першим вийшов» (LIFO), тобто останній доданий елемент є першим видаленим. З іншого боку, черга працює за принципом FIFO (First In, First Out), де перший доданий елемент першим видаляється.