Яка різниця між стеком і чергою в C++?

Основна відмінність між структурами даних стека та черги полягає в тому Стек відповідає LIFO, тоді як Черга слідує за типом структури даних FIFO. LIFO означає «останній прийшов, перший вийшов». Це означає, що коли ми поміщаємо дані в стек, він спочатку обробляє останній запис. І навпаки, FIFO означає «першим прийшов, першим вийшов».

Стеки відповідають принципу LIFO і використовуються для зворотного відстеження, керування викликами функцій та оцінки виразів. Черги дотримуються принципу FIFO і використовуються для планування завдань, керування ресурсами та алгоритмів пошуку в ширину.

Стеки використовуються для кнопок скасування в різних програмах. Більшість останніх змін надсилається до стеку. Навіть кнопка «Назад» у веб-переглядачі працює за допомогою стека, куди вставляються всі нещодавно відвідані веб-сторінки. Черги використовуються у випадку принтерів або завантаження зображень.

Черга завжди базується на FIFO. Список може базуватися на FIFO або LIFO тощо. Черга має два покажчики FRONT і REAR. У той час як List має лише один покажчик, який в основному називається HEAD.

Підхід:

  1. Займіть єдину чергу.
  2. push(x): помістити елемент у чергу.
  3. Використовуйте цикл for із розміром ()-1, вилучайте елемент із черги та знову повертайте до черги, отже, останній елемент стає останнім і навпаки.
  4. pop(): видалити елемент із черги.

Принцип упорядкування Стек дотримується принципу «Останній прийшов, першим вийшов» (LIFO), тобто останній доданий елемент є першим видаленим. З іншого боку, черга працює за принципом FIFO (First In, First Out), де перший доданий елемент першим видаляється.