Содержание
Очередь - это динамическая структура данных, из которой вы можете получить доступ к данным в процессе «первым пришел, первым вышел». Стек - это динамическая структура данных, из которой вы можете получить доступ к данным в процессе «первым пришел, первым вышел». Если вы реализуете стек, станет доступным только последний введенный вами элемент. Если вы хотите получить доступ к данным, на которых они основаны (первый элемент, который вы поместили), то вы будете рассматривать их как очередь. Для этого необходимо реализовать вторую кучу.
направления
Реализация очереди с использованием двух стеков проста (Ablestock.com/AbleStock.com/Getty Images)-
В своем текстовом редакторе напишите код для реализации стека в соответствии с процедурами и функциями, доступными на языке программирования, который вы хотите использовать. Вызовите этот стек Stack_Entry. Поместите данные в Stack_Entry (многие языки программирования используют команду «push» для добавления данных). Например, запустите команду «push» в Stack_Entry, чтобы ввести данные в следующем порядке: «A», «B» и «C». «А» является первым, чтобы войти и находится в нижней части стека. Если вы хотите получить доступ к этому первому элементу, вы рассматриваете данные как очередь.
-
Напишите код для реализации второго стека в соответствии с процедурами и функциями, доступными на языке программирования, который вы хотите использовать. Назовите это StackSafe (многие языки программирования используют команду «pop» для удаления данных из стека).
-
Удалите каждый предмет из стека Stack_Insert и поместите их в стек сна. В общих чертах вы удаляете элемент Stack_Input и помещаете его в StackAid. Затем вы проверяете, является ли Stack_Input пустым. Если он не пустой, удалите следующий элемент из Stack_Input и поместите его в стек сна. Повторяйте, пока 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 первым пришел, первым вышел).
Два стека равны ряду
чаевые
- Большинство языков программирования предоставляют функции для обработки данных в векторе, как если бы они были очередью или стеком. То есть вы можете получить доступ как к последней, так и к первой позиции вектора, независимо от того, с какого конца вы вводите данные. Если ваши данные находятся в векторе, вам не нужно беспокоиться о доступе к ним в виде очереди или стека. Но если ваши данные находятся в динамической куче, и вы хотите рассматривать их как очередь, то вам следует реализовать второй стек.
Что вам нужно
- Текстовый редактор
- Компилятор или интерпретатор для некоторого языка программирования