Зміст
Черга - це динамічна структура даних, з якої можна отримати доступ до даних у процесі "перший прийшов, перший вийшов". Стек - це динамічна структура даних, з якої ви можете отримати доступ до даних у процесі "останнього входу, першого виходу". Якщо ви реалізуєте стек, стане доступним лише останній введений елемент. Якщо ви хочете отримати доступ до даних, які є її основою (перший елемент, який ви поклали), то ви будете розглядати його як чергу. Для цього необхідно реалізувати другу купку.
Інструкції
Реалізація черги з використанням двох стеків проста (Ablestock.com/AbleStock.com/Getty Images)-
У текстовому редакторі напишіть код для реалізації стека відповідно до процедур і функцій, доступних на мові програмування, яку ви хочете використовувати. Зателефонуйте до стека Stack_Entry. Помістіть дані в Stack_Entry (багато мов програмування використовують команду "push" для додавання даних). Наприклад, запустіть команду "push" в Stack_Entry, щоб ввести дані в наступному порядку: "A", "B" і "C". "A" є першим, хто входить і знаходиться внизу стека. Якщо ви хочете отримати доступ до цього першого елемента, ви обробляєте дані як чергу.
-
Напишіть код для реалізації другого стека відповідно до процедур і функцій, доступних на мові програмування, яку ви бажаєте використовувати. Назвемо його StackSafe (багато мови програмування використовують команду "pop" для видалення даних зі стека).
-
Видаліть кожен елемент зі стека Stack_Insert і помістіть їх у стек сну. Загалом, ви видаляєте елемент Stack_Input і розміщуєте його в StackAid. Потім перевірте, чи є Stack_Input порожнім. Якщо він не порожній, видаліть наступний елемент зі входу Stack_In і помістіть його в стек сну. Повторіть, поки не буде порожній Stack_Input. У нашому прикладі ви вилучите "C" з Stack_Input і помістіть його в Stack_Aid. Переконайтеся, що InputPilot порожній. Видалити "B" з Stack_Input і встановити його на Stack_Aid. Переконайтеся, що InputPilot порожній. Видаліть "A" з Stack_Input і встановіть його на Stack_Aid. Переконайтеся, що InputPilot порожній.
-
Коли стек Stack_Path порожній, елемент, який знаходився в базі Stack_Input ("A" у нашому прикладі), тепер знаходиться у верхній частині Stack_Aside. Видаліть елемент SleepSeat, і ви перетворили свій стек у чергу. Ваш перший елемент у стеку тепер є першим елементом, який буде вилучений (перший, перший, або FIFO у першому, першому).
Два стеки дорівнюють рядку
Як
- Більшість мов програмування надають функції для обробки даних у векторі, як якщо б вони були чергою або стеком. Тобто ви можете отримати доступ як до останньої, так і до першої позиції вектора, незалежно від того, з якого кінця ви вводите дані. Якщо ваші дані знаходяться у векторі, вам не потрібно турбуватися про доступ до них у вигляді черги або стека. Але якщо ваші дані перебувають у динамічній купі, і ви хочете розглядати її як чергу, то вам слід реалізувати другий стек.
Що вам потрібно
- Текстовий редактор
- Компілятор або інтерпретатор для деяких мов програмування