Очереди, стеки

по определению стеки и очереди работают по принципу: первым пришел -последним ушел. при этом доступно две операции: добавление (поставить в хвост) и взятие (из головы) элемента. так тогда в чем отличие их между собой? я имею ввиду как в программе отличить одно от другого и что вообще когда предпочтительнее использовать?
6 ответов

Стек работает по принципу LIFO - последний пришел, первый ушел


А очередь FIFO - первый пришел, первый ушел


Для стека не определена операция взятие из головы, стек односторонний элемент, это очередь двухголовая, но тоже добавляется с одной стороны, а выбирается с другой. Есть еще деки - это стек и очередь в одном стакане, две головы и два хвоста.


т.е. сортировка в стеках и очередях невозможна?


т.е. сортировка в стеках и очередях невозможна?
ну вы же одеваете ласты а не кирзовые сапоги, чтобы нырять в море? хотя нырять ВОЗМОЖНО и в сапогах...так что не стоит использовать функции, допустимые, но не свойственые определенным элементам...применительно к этому вопросу это означает, что отсортировать можно, но нарушив при этом последовательность в цепочке, а это является основным отличительным признаком очереди и стека от прочих цепочек...в реальной жизни, став в очередь в магазине, вы уверены, что ставшие ЗА вами, не попадут РАНЬШЕ вас к кассиру - и будете очень недовольны, если какой нибудь энтузиаст (вроде вас) решит использовать другой механизм...


т.е. сортировка в стеках и очередях невозможна?
Естественно, для этого нужна другая структура - линейный список, односвязный список и двухсвязный список