В чем основная разница между стеком и очередью ??
Пожалуйста, помогите мне, я не могу найти разницу.
Как отличить стек от очереди?
Я искал ответ в разных ссылках и нашел этот ответ ..
В программировании высокого уровня
стек определяется как список или последовательность элементов, которые удлиняются за счет размещения новых элементов «поверх» существующих элементов и укорачиваются за счет удаления элементов из верхней части существующих элементов. Это ADT [абстрактный тип данных] с математическими операциями «push» и «pop».
Очередь - это последовательность элементов, которая добавляется путем размещения нового элемента позади существующего и сокращается путем удаления элементов перед очередью. Это ADT [абстрактный тип данных]. Эти термины понимаются больше при программировании на Java, C ++, Python и так далее.
Могу я получить более подробный ответ? Пожалуйста, помогите мне.
Ответы:
Стек - это структура данных LIFO (последний пришел - первый ушел). Связанная ссылка на Википедию содержит подробное описание и примеры.
Очередь - это структура данных FIFO (первым пришел - первым ушел). Связанная ссылка на Википедию содержит подробное описание и примеры.
источник
Представьте себе стопку бумаги . Последний кусок, помещенный в стопку, находится сверху, поэтому он выходит первым. Это ЛИФО . Добавление листа бумаги называется «толканием», а удаление листа - «выталкиванием».
Представьте себе очередь в магазине . Первый человек в очереди - это первый человек, который выходит из строя. Это FIFO . Человек, попавший в очередь, «ставится в очередь», а человек, выходящий из очереди, «удаляется из очереди».
источник
Визуальная модель
Блины стека (LIFO)
Единственный способ добавить и / или удалить - сверху.
Линейная очередь (FIFO)
Когда кто-то приходит, они приходят в конец очереди, а когда кто-то уходит, они уходят с начала очереди.
Интересный факт: британцы называют очереди людей очередью
источник
Вы можете рассматривать их как упорядоченный список вещей (упорядоченный по времени, когда они были добавлены в список). Основное различие между ними заключается в том, как новые элементы входят в список, а старые элементы покидают список.
Что касается стека, если у меня есть список
a, b, c
, и я добавляюd
его, он прикрепляется к концу, поэтому я получаюa,b,c,d
. Если я хочу вывести элемент из списка, я удаляю последний добавленный элемент, то естьd
. После поп, мой списокa,b,c
сноваДля очереди я добавляю новые элементы таким же образом.
a,b,c
становитсяa,b,c,d
после добавленияd
. Но теперь, когда я открываю, мне нужно взять элемент из начала списка, так что он становитсяb,c,d
.Все очень просто!
источник
Очередь
Очередь - это упорядоченный набор элементов.
Элементы удаляются на одном конце, который называется «передним» концом очереди.
Элементы вставляются в другой конец очереди, называемый «задней частью».
Первый вставленный элемент удаляется первым (FIFO).
стек
Стек - это набор предметов.
Он позволяет получить доступ только к одному элементу данных: последнему вставленному элементу.
Элементы вставляются и удаляются с одного конца, который называется «Верх стопки».
Это динамичный и постоянно меняющийся объект.
Все элементы данных кладутся на вершину стека и снимаются с вершины.
Эта структура доступа известна как структура "последний вошел, первым ушел" (LIFO).
источник
СТЕК:
ОЧЕРЕДЬ:
источник
Стек - это набор элементов, которые можно сохранять и извлекать по одному. Элементы извлекаются в порядке, обратном их времени хранения, т. Е. Последний сохраненный элемент является следующим элементом, который будет извлечен. Стек иногда называют структурой Last-In-First-Out (LIFO) или First-In-Last-Out (FILO). Ранее сохраненные элементы не могут быть получены до тех пор, пока не будет получен последний элемент (обычно называемый «верхним» элементом).
Очередь - это набор элементов, которые можно сохранять и извлекать по одному. Элементы извлекаются в порядке их времени хранения, т. Е. Первый сохраненный элемент является следующим элементом, который будет извлечен. Очередь иногда называют структурой «первым пришел - первым ушел» (FIFO) или «Последний вошел - последний ушел» (LILO). Сохраненные впоследствии элементы не могут быть извлечены, пока не будет извлечен первый элемент (обычно называемый «передним» элементом).
источник
СТЕК: Стек определяется как список элементов, в который мы можем вставлять или удалять элементы только наверху стека.
Стек используется для передачи параметров между функциями. При вызове функции параметры и локальные переменные сохраняются в стеке.
Стек - это набор элементов, которые можно сохранять и извлекать по одному. Элементы извлекаются в порядке, обратном их времени хранения, т. Е. Последний сохраненный элемент является следующим элементом, который будет извлечен. Стек иногда называют структурой Last-In-First-Out (LIFO) или First-In-Last-Out (FILO). Ранее сохраненные элементы не могут быть получены до тех пор, пока не будет получен последний элемент (обычно называемый «верхним» элементом).
ОЧЕРЕДЬ:
Очередь - это набор элементов одного типа. Это линейный список, в котором вставки могут происходить на одном конце списка, называемом задней частью списка, а удаления могут происходить только на другом конце, называемом передней частью списка.
Очередь - это набор элементов, которые можно сохранять и извлекать по одному. Элементы извлекаются в порядке их времени хранения, т. Е. Первый сохраненный элемент является следующим элементом, который будет извлечен. Очередь иногда называют структурой «первым пришел - первым ушел» (FIFO) или «Последний вошел - последний ушел» (LILO). Сохраненные впоследствии элементы не могут быть извлечены, пока не будет извлечен первый элемент (обычно называемый «передним» элементом).
источник
Чтобы попытаться упростить описание стека и очереди, они оба являются динамическими цепочками информационных элементов, к которым можно получить доступ с одного конца цепочки, и единственная реальная разница между ними заключается в том, что:
при работе со стеком
пока с очередью
ПРИМЕЧАНИЕ : я использую абстрактную формулировку извлечения / удаления в этом контексте, потому что бывают случаи, когда вы просто извлекаете элемент из цепочки или, в некотором смысле, просто читаете его или получаете доступ к его значению, но есть также случаи, когда вы удаляете элемент из цепочки. цепочка и, наконец, есть случаи, когда вы выполняете оба действия с одним и тем же вызовом.
Также слово «элемент» специально используется для того, чтобы максимально абстрагировать воображаемую цепочку и отделить ее от конкретных терминов языка программирования. Этим абстрактным информационным объектом, называемым элементом, может быть что угодно: указатель, значение, строка или символы, объект ... в зависимости от языка.
В большинстве случаев, хотя на самом деле это либо значение, либо ячейка памяти (то есть указатель). А остальные просто скрывают этот факт за языковым жаргоном <
Очередь может быть полезна, когда порядок элементов важен и должен быть точно таким же, как когда элементы впервые попали в вашу программу. Например, при обработке аудиопотока или при буферизации сетевых данных. Или когда вы выполняете какой-либо тип промежуточной обработки. Во всех этих случаях вам нужно, чтобы последовательность элементов выводилась в том же порядке, в каком они поступили в вашу программу, иначе информация может потерять смысл. Таким образом, вы можете разбить свою программу на часть, которая считывает данные с некоторого ввода, выполняет некоторую обработку и записывает их в очередь, а часть, которая извлекает данные из очереди, обрабатывает их и сохраняет их в другой очереди для дальнейшей обработки или передачи данных. ,
Стек может быть полезен, когда вам нужно временно сохранить элемент, который будет использоваться на непосредственном шаге (ах) вашей программы. Например, языки программирования обычно используют структуру стека для передачи переменных функциям. На самом деле они сохраняют (или помещают) аргументы функции в стек, а затем переходят к функции, где они удаляют и извлекают (или выталкивают) такое же количество элементов из стека. Таким образом, размер стека зависит от количества вложенных вызовов функций. Кроме того, после того, как функция была вызвана и завершила то, что она делала, она оставляет стек в том же состоянии, что и до того, как она была вызвана! Таким образом, любая функция может работать со стеком, игнорируя, как другие функции работают с ним.
Наконец, вы должны знать, что есть и другие термины, которые используются для обозначения аналогичных концепций. Например, стек можно назвать кучей. Существуют также гибридные версии этих концепций, например, двусторонняя очередь может вести себя одновременно как стек и как очередь, поскольку к ней могут обращаться одновременно оба конца. Кроме того, тот факт, что структура данных предоставляется вам в виде стека или очереди, не обязательно означает, что она реализована как таковая, существуют экземпляры, в которых структура данных может быть реализована как что угодно и предоставлена как конкретная структура данных просто потому, что ее можно заставить вести себя подобным образом. Другими словами, если вы предоставите метод push и pop для любой структуры данных, они волшебным образом станут стеками!
источник
СТЕК - это список LIFO (последний пришел, первый ушел). означает, что в стек вставлены 3 элемента, то есть 10,20,30. 10 вставляется первым, а 30 вставляется последним, поэтому 30 сначала удаляется из стека, а 10 - последним из стека. Это список LIFO (Last In First Out).
QUEUE - это список FIFO (First In First Out). Означает, что сначала вставляется один элемент, который должен быть удален в первую очередь, например, очередь людей.
источник
Складывает рассматриваемую вертикальную коллекцию. Сначала поймите, что коллекция - это ОБЪЕКТ, который собирает и организует другие более мелкие ОБЪЕКТЫ. Эти меньшие ОБЪЕКТЫ обычно называют Элементами. Эти элементы «помещаются» в стек в порядке ABC, где A - первый, а C - последний. по вертикали это будет выглядеть так: добавлен 3-й элемент) C 2-й элемент добавлен) B 1-й элемент добавлен) A
Обратите внимание, что буква «А», которая была добавлена в стек первой, находится внизу. Если вы хотите удалить «A» из стека, вам сначала нужно удалить «C», затем «B» и, наконец, ваш целевой элемент «A». Стек требует подхода LIFO при работе со сложностями стека. (Last In First Out) При удалении элемента из стека правильный синтаксис - pop. мы не удаляем элемент из стека, мы «выталкиваем» его.
Напомним, что «A» был первым элементом, помещенным в стек, а «C» был последним элементом, помещенным в стек. Если вы решите, что хотите увидеть, что находится внизу стека, так как 3 элемента в стеке упорядочены, A является первым, B является вторым, а C является третьим элементом, верх должен быть снят, а затем второй элемент добавлен для просмотра нижней части стека.
источник