Как реализовать очередь с использованием двух стеков

Автор: Laura McKinney
Дата создания: 4 Апрель 2021
Дата обновления: 19 Ноябрь 2024
Anonim
Java. Очередь и стек.
Видео: Java. Очередь и стек.

Содержание

Очередь - это динамическая структура данных, из которой вы можете получить доступ к данным в процессе «первым пришел, первым вышел». Стек - это динамическая структура данных, из которой вы можете получить доступ к данным в процессе «первым пришел, первым вышел». Если вы реализуете стек, станет доступным только последний введенный вами элемент. Если вы хотите получить доступ к данным, на которых они основаны (первый элемент, который вы поместили), то вы будете рассматривать их как очередь. Для этого необходимо реализовать вторую кучу.


направления

Реализация очереди с использованием двух стеков проста (Ablestock.com/AbleStock.com/Getty Images)

    Два стека равны ряду

  1. В своем текстовом редакторе напишите код для реализации стека в соответствии с процедурами и функциями, доступными на языке программирования, который вы хотите использовать. Вызовите этот стек Stack_Entry. Поместите данные в Stack_Entry (многие языки программирования используют команду «push» для добавления данных). Например, запустите команду «push» в Stack_Entry, чтобы ввести данные в следующем порядке: «A», «B» и «C». «А» является первым, чтобы войти и находится в нижней части стека. Если вы хотите получить доступ к этому первому элементу, вы рассматриваете данные как очередь.

  2. Напишите код для реализации второго стека в соответствии с процедурами и функциями, доступными на языке программирования, который вы хотите использовать. Назовите это StackSafe (многие языки программирования используют команду «pop» для удаления данных из стека).


  3. Удалите каждый предмет из стека 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 пуст.

  4. Когда стек Stack_Path пуст, элемент, который был в базе Stack_Input (в нашем примере это A), теперь находится наверху Stack_Aside. Удалите элемент SleepSeat, и вы превратили свой стек в очередь. Ваш первый предмет в стеке теперь является первым предметом, который нужно извлечь (первым пришел, первым вышел или FIFO первым пришел, первым вышел).


чаевые

  • Большинство языков программирования предоставляют функции для обработки данных в векторе, как если бы они были очередью или стеком. То есть вы можете получить доступ как к последней, так и к первой позиции вектора, независимо от того, с какого конца вы вводите данные. Если ваши данные находятся в векторе, вам не нужно беспокоиться о доступе к ним в виде очереди или стека. Но если ваши данные находятся в динамической куче, и вы хотите рассматривать их как очередь, то вам следует реализовать второй стек.

Что вам нужно

  • Текстовый редактор
  • Компилятор или интерпретатор для некоторого языка программирования

Хирургия часто творит чудеса. Хирурги умеют делать прекрасный ремонт человеческого тела. Однако процедуры инвазивной хирургии могут быть трудными для организма. Время восстановления варьируется в зави...

Компьютеры улучшили как память, так и вычислительную мощность, они уже могут запускать больше приложений одновременно, что может быть легко отображено на мониторе. В результате два монитора стали очен...

Свежие статьи