Я читаю структуры данных и вижу стек и очередь, но я не получаю достаточных примеров в компьютерных системах или веб-разработке или особых проблемах, когда я должен использовать стек или очередь или дерево и т. Д.Использование стека и очереди?
ответ
Стеки используются большинством (всех?) Языков программирования, чтобы отслеживать состояние программы при вызове подпрограмм.
Пояснение: Код вашей программы хранится в основной памяти. CPU имеет указатель инструкции, который всегда указывает на следующую команду, которая будет выполнена. Когда инструкция выполнена, этот указатель увеличивается на единицу, указывая на следующую команду.
Когда ваша программа входит в подпрограмму, указатель инструкции переходит к другому адресу. Когда эта процедура закончена, она должна знать, откуда она. Итак, последний адрес перед скачком помещается в стек. Когда функция закончена, самым верхним элементом в стеке будет этот адрес.
Это также является причиной того, что чрезмерная рекурсия может привести к переполнению стека. Слишком много вложенных вызовов приводит к тому, что многие обратные адреса помещаются в стек, но ни один из них не удаляется.
Подробнее о Wikipedia.
Деревья могут использоваться для многих вещей, например binary search trees.
Можете ли вы, пожалуйста, описать «отслеживать состояние программы при вызове подпрограмм» –
@sushil: добавлено объяснение и ссылка для вызовов-стеков. –
Очереди являются общими, для обработки по принципу «первым пришел-первым-служите». Сетевые пакеты, запросы ввода-вывода и т. Д.
Вам нужен стек, когда вам нужно повторно использовать последний элемент, который вы положили на него снова. Я не могу найти хороший пример с верхней части шляпы, но он используется, например. в преобразовании нормальных математических выражений в RPN или для хранения узлов при выполнении поиска по глубине в графе.
Queue - First In First Out, используемый для последовательной обработки данных. Может использоваться для обработки задач в том порядке, в котором они были установлены. Стек - это противоположность очереди - Last In First Out, наиболее часто используемый пример - стек вызовов метода.
вы можете разработать сложный стек вызовов метода? –
@sushil - Как насчет более простого примера LIFO? Подумайте о функции отмены в текстовом процессоре. Вам нужно сохранить каждую вещь, которую вы сделали, чтобы ее можно было отменить позже, и когда вы ее открываете, вы хотите начать с последнего элемента (сверху стека) и вернуться назад к первому элементу. – JohnFx
@JohnFx - отличный пример! – dexter
В стеке удаление и вставка выполняются на одном конце. Так называется Last In First Out. В стеке используется только один указатель, который называется TOP.No потери памяти.
В случае удаления и вставки очереди выполняется на двух концах. Таким образом, он называется First In First Out. В очереди два указателя, называемые FRONT и REAR.Wastage пространства памяти.
- 1. Программа палиндрового стека и очереди
- 2. Комбинация очереди стека C#
- 3. очереди сетевого стека Linux
- 4. C++ Реализация комбинированной очереди/стека
- 5. Программа Palindrome с использованием стека и очереди
- 6. Ошибка сегментации в программе стека и очереди
- 7. Блокировка свободного стека и очереди в C#
- 8. Переполнение стека и емкости очереди (C++)
- 9. Понимание этой очереди и кода стека
- 10. Ошибка стека и очереди в моей программе
- 11. Java стека и очереди в одном массиве
- 12. Сравните Очереди и содержимое стека, в
- 13. Реализация очереди с использованием стека
- 14. переполнение стека при попытке реализовать безблокировочного очереди
- 15. java Fork/Объяснить использование стека
- 16. Наибольшая перестановка с использованием стека или очереди
- 17. Количество вызовов, чтобы определить размер стека/очереди
- 18. магазин объект стека в приоритетной очереди
- 19. Зачем использовать два стека для очереди?
- 20. цепочка событий jQuery - от стека до очереди
- 21. Реализация очереди приоритетов с использованием стека
- 22. Ошибка очереди стека ядра ядра Linux
- 23. Определение палиндром с помощью стека и очереди в Java
- 24. Имитация командной очереди и отмена стека с помощью RxJS
- 25. Нерекурсивный DFS vs BFS, отличаются только от стека и очереди?
- 26. Кронштейн Checker с использованием стека и очереди в C#
- 27. Сравнение стека pop и очереди dequeue в Java (палиндромы)
- 28. Самый эффективный способ реализации стека и очереди вместе?
- 29. MIPS: соответствующее использование для указателя стека ($ sp) и стека
- 30. Использование массива вроде очереди
Было ли ваше задание привести примеры использования стека, очередей или деревьев, возможно? –
нет заданий, мне просто интересно. Кроме того, я не студент колледжа. –
ха-ха-1 за то, что вам интересно. Anways по крайней мере у меня есть ответ. –