Какова основная разница между стеком и очередью?

В чем основное отличие между стеком и очередью?

Пожалуйста, помогите мне, я не могу найти разницу.

Как вы различаете стек и очередь?

Я искал ответ в разных ссылках и нашел этот ответ.

При программировании на высоком уровне

стек определяется как список или последовательность элементов, которые удлиняются путем размещения новых элементов "сверху" существующих элементов и сокращаются путем удаления элементов из верхней части существующих элементов. Это ADT [абстрактный тип данных] с математическими операциями "push" и "pop".

Очередь представляет собой последовательность элементов, добавленных к ней, помещая новый элемент в конец существующего и сокращаясь, удалив элементы перед очередью. Это ADT [абстрактный тип данных]. Эти понятия понятны в программировании Java, С++, Python и т.д.

Могу ли я получить более подробный ответ? Пожалуйста, помогите мне.

Ответ 1

Stack - это структура данных LIFO (последний в первой). Связанная ссылка на wikipedia содержит подробное описание и примеры.

Queue - структура данных FIFO (первая в первой). Связанная ссылка на wikipedia содержит подробное описание и примеры.

Ответ 2

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

Для стека, если у меня есть список a, b, c, и я добавляю d, он становится привязанным к концу, поэтому я заканчиваю a,b,c,d. Если я хочу поместить элемент списка, я удаляю последний добавленный элемент, который является d. После pop, мой список теперь a,b,c снова

Для очереди я добавляю новые элементы таким же образом. a,b,c становится a,b,c,d после добавления d. Но теперь, когда я поплю, мне нужно взять элемент из списка, поэтому он становится b,c,d.

Это очень просто!

Ответ 3

Представьте себе стопку бумаги. Первая часть, помещенная в стек, находится внизу, так что это последняя из них. Это LIFO.

Представьте себе очередь в хранилище. Первый человек в очереди - первый человек, который выходит из линии. Это FIFO.

Ответ 4

Queue

Очередь представляет собой упорядоченный набор элементов.

Элементы удаляются на одном конце с именем "front end of queue".

Элементы вставлены в другой конец, называемый "тылом очереди".

Первый вставленный элемент - первый, который нужно удалить (FIFO).

Stack

Стек - это набор элементов.

Он разрешает доступ только к одному элементу данных: последний вставленный элемент.

Элементы вставляются и удаляются с одного конца, называемого "Top of the stack".

Это динамический и постоянно меняющийся объект.

Все элементы данных помещаются поверх стека и удаляются сверху

Эта структура доступа известна как структура Last in First out (LIFO)

Ответ 5

Визуальная модель

Блин Stack (LIFO)

Единственный способ добавить один и/или удалить один из них - сверху.

pancake stack

Линия Queue (FIFO)

Когда кто-то прибывает, они доходят до конца очереди, а когда они уходят, они уходят в передней части очереди.

dmv line

Забавный факт: англичане относятся к строкам людей как Queue

Ответ 6

STACK:

  • Stack определяется как список элементов, в которые мы можем вставлять или удалять элементы только в верхней части стека.
  • Поведение стека похоже на систему Last-In First-Out (LIFO).
  • Stack используется для передачи параметров между функциями. При вызове функции параметры и локальные переменные хранятся в стеке.
  • Языки программирования высокого уровня, такие как Pascal, c и т.д., которые обеспечивают поддержку рекурсии, используют стек для учета. Помните, что в каждом рекурсивном вызове необходимо сохранить текущее значение параметров, локальных переменных и обратного адреса (адрес, на который элемент управления должен возвратиться после вызова).

ОЧЕРЕДЬ:

  • Queue - это коллекция того же типа. Это линейный список, в котором вставка может иметь место на одном конце списка, называемый тылом списка, а удаления могут выполняться только на другом конце, называемом front списка
  • Поведение очереди похоже на систему First-In-First-Out (FIFO).

Ответ 7

Стек представляет собой набор элементов, которые можно хранить и извлекать по одному. Элементы извлекаются в обратном порядке их времени хранения, т.е. Последний сохраненный элемент - это следующий элемент, который нужно извлечь. Стек иногда называют структурой Last-In-First-Out (LIFO) или First-In-Last-Out (FILO). Элементы, ранее сохраненные, не могут быть восстановлены до тех пор, пока не будет найден последний элемент (обычно называемый "верхним" элементом).

Очередь представляет собой набор элементов, которые можно сохранять и извлекать по одному. Элементы извлекаются в порядке их времени хранения, то есть первым сохраненным элементом является следующий элемент, подлежащий извлечению. Очередь иногда называется структурой First-In-First-Out (FIFO) или Last-In-Last-Out (LILO). Элементы, сохраненные впоследствии, не могут быть восстановлены до тех пор, пока не будет найден первый элемент (обычно называемый "фронт" ).

Ответ 8

СТЕК: Стек определяется как список элементов, в которые мы можем вставлять или удалять элементы только в верхней части стека.

Стек используется для передачи параметров между функциями. При вызове функции параметры и локальные переменные хранятся в стеке.

Стек представляет собой набор элементов, которые можно хранить и извлекать по одному. Элементы извлекаются в обратном порядке их времени хранения, т.е. Последний сохраненный элемент - это следующий элемент, который нужно извлечь. Стек иногда называют структурой Last-In-First-Out (LIFO) или First-In-Last-Out (FILO). Элементы, ранее сохраненные, не могут быть восстановлены до тех пор, пока не будет найден последний элемент (обычно называемый "верхним" элементом).

ОЧЕРЕДЬ:

Queue представляет собой набор элементов того же типа. Это линейный список, в котором вставки могут выполняться в одном конце списка, называемом задней частью списка, а удаления могут выполняться только на другом конце, называемом передней частью списка

Очередь представляет собой набор элементов, которые можно сохранять и извлекать по одному. Элементы извлекаются в порядке их времени хранения, то есть первым сохраненным элементом является следующий элемент, подлежащий извлечению. Очередь иногда называется структурой First-In-First-Out (FIFO) или Last-In-Last-Out (LILO). Элементы, сохраненные впоследствии, не могут быть восстановлены до тех пор, пока не будет найден первый элемент (обычно называемый "фронт" ).

Ответ 9

STACK - это список LIFO (последний, первый раз). означает, что 3 элемента вставлены в стек i.e 10,20,30. 10 вставлен первым, а 30 вставлен последним, поэтому 30 сначала удаляется из стека, а 10 - последним удаляется из stack.this является списком LIFO (Last In First Out).

QUEUE - это список FIFO (First In First Out). означает, что сначала вставлен один элемент, который должен быть удаленный first.e.g очередь людей.

Ответ 10

Устанавливает рассматриваемый вертикальный набор. Сначала поймите, что коллекция представляет собой ОБЪЕКТ, который собирает и организует другие более мелкие ОБЪЕКТЫ. Эти меньшие ОБЪЕКТЫ обычно называются Элементами. Эти элементы "выталкиваются" в стеке в порядке A B C, где A является первым, а C - последним. по вертикали это будет выглядеть так:                                                 Добавлен третий элемент) C                                                 Добавлен второй элемент) B                                                 Добавлен 1-й элемент) A

Обратите внимание, что "A", который был сначала добавлен в стек, находится внизу. Если вы хотите удалить "A" из стека, сначала нужно удалить "C", затем "B", а затем, наконец, ваш целевой элемент "A". Стек требует LIFO-подхода при работе со сложностями стека. (Last In First Out) При удалении элемента из стека правильный синтаксис является pop. мы не удаляем элемент из стека, который мы "выталкиваем".

Вспомним, что "A" был первым элементом, нажатым на стек, и "C" был последним элементом, помещенным в стек. Если вы решите, что хотите увидеть, что находится в нижней части стека, 3 элемента находятся в стеке, причем A является первым B, являющимся вторым, а C - третьим, верхний должен быть выскользнут, а затем второй элемент добавлен для просмотра нижней части стека.

Ответ 11

Чтобы попытаться упростить описание стека и очереди, Они представляют собой динамические цепочки информационных элементов, к которым можно получить доступ с одного конца цепи, и единственная реальная разница между ними заключается в том, что:

при работе со стеком

  • вы вставляете элементы на одном конце цепочки и
  • вы извлекаете и/или удаляете элементы с одного и того же конца цепочки.

а при очереди

  • вы вставляете элементы на одном конце цепочки и
  • вы извлекаете/удаляете их с другого конца.

Примечание: Я использую абстрактную формулировку retrieve/remove в этом контексте, потому что есть случаи, когда вы просто извлекаете элемент из цепочки или в некотором смысле просто читаете его или получаете доступ к его значению, но также есть случаи, когда вы удаляете элемент из цепочки и, наконец, есть случаи, когда вы выполняете оба действия с одним и тем же вызовом.

Также элемент слова намеренно используется для того, чтобы максимально абстрагировать воображаемую цепочку и отделить ее от определенного языка программирования  сроки. Этот абстрактный объект информации, называемый элементом, может быть любым, от указателя, значения, строки или символов, объекта,... в зависимости от языка.

В большинстве случаев, хотя это фактически либо значение, либо местоположение памяти (то есть указатель). Остальное просто скрывает этот факт за языковым жаргоном <

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

Стек может быть полезна, когда вам нужно временно сохранить элемент, который будет использоваться на ближайших шагах (-ях) вашей программы. Например, языки программирования обычно используют структуру стека для передачи переменных в функции. То, что они на самом деле делают, это хранить (или нажимать) аргументы функции в стеке, а затем переходить к функции, в которой они удаляют и извлекают (или высказывают) одинаковое количество элементов из стека. Таким образом, размер стека зависит от количества вложенных вызовов функций. Кроме того, после того, как функция была вызвана и закончена, что она делает, она оставляет стек в том же состоянии, что и до его вызова! Таким образом, любая функция может работать со стеком, игнорируя, как другие функции работают с ним.

Наконец, вы должны знать, что существуют другие термины, используемые для аналогичных понятий. Например, стек можно назвать кучей. Существуют также гибридные версии этих концепций, например, двухсторонняя очередь может вести себя одновременно с стеком и в очереди, поскольку к ним можно одновременно обращаться обоими концами. Кроме того, тот факт, что структура данных предоставляется вам в виде стека или в виде очереди, не обязательно означает, что она реализована как таковая, существуют экземпляры, в которых структура данных может быть реализована как что угодно и должна предоставляться как конкретная структуру данных просто потому, что можно вести себя так. Другими словами, если вы предоставляете метод push и pop для любой структуры данных, они волшебным образом становятся стеками!