Другие языки программирования и технологии
Что такое стек?
Что такое стек и каков принцип организации данных в нём? Для чего он нужен? Чем стек отличается от других конструкций для хранения данных (структуры, массивы и т. д.)? В книге, по которой изучаю С++, чёткого определения нет, в вики написано не очень понятно.
Стек это своего рода контейнер, работающий по принципу "Первый вошёл, последний вышел" или "Последний вошёл, первый вышел", т. е. по принципу магазина: в обойму ты вставляешь сверху, взять ты тоже можешь только верхний. Чтобы получить доступ к нижнему патрону, ты должен извлечь все остальные. Использовать можно его следующем образом. Например, тебе нужно отсортировать числа (вне массива) и вывести их на экран. Ищешь наибольший элемент, помещаешь в стэк, затем ещё раз отыскиваешь и снова в стэк, и так пока он не будет заполнен. Затем ты в цикле извлекаешь элемент из стека, и выводишь его на экран, пока стек не опустеет.
Представь себе магазин для автомата. Ты можешь вставить патрон, можешь вынуть. Но что характерно, вставить патрон можно только сверху, и вынуть - тоже только верхний патрон. Это и есть стек. Только в компьютере в нем хранятся не патроны, а данные. Есть стек процессора, в котором принято хранить состояния регистров при входе в подпрограмму и восстанавливать их из стека после возвращения из нее. Это позволяет в случае, когда одна подпрограмма вызывает другую, восстановить регистры в правильном порядке. Программные же стеки представляют из себя динамические структуры данных, организованные в виде односвязного списка, в котором добавление и удаление всегда осуществляется с начала списка.
Стэк это очередь прослеженная в обратном порядке. От английского to stack распологать одно над другим. В русском переводе особенно советские переводчики использовали понятие магазин. Кстати в сопроцессоре математическом реализован принцип револьвера. Еще другое понятие структура типа LIFO last in first out. Чтобы проще понять стопка купюр в кассе так вот последнию достают первой. Это просто все делаеться резервируеться память и она указывает на самый верх стека скажем 1000 байт на самый последний а потом уменьшаеться вершина по мере загрузки элементов.
Стек (от англ. stack — стопка) — структура данных, представляющая из себя упорядоченный набор элементов, в которой добавление новых элементов и удаление существующих производится с одного конца, называемого вершиной стека. При том первым из стека удаляется элемент, который был помещен туда последним, то есть в стеке реализуется стратегия «последним вошел — первым вышел» (last-in, first-out — LIFO). Примером стека в реально жизни может являться стопка тарелок : когда мы хотим вытащить тарелку, мы должны снять все тарелки выше
Вставка, удаление за O(1), поиск за O(n) по времени.
Реализовывать можно по разному.
Вставка, удаление за O(1), поиск за O(n) по времени.
Реализовывать можно по разному.
Вахид Нуридинов
Это когда в программе вызывается процедура, идёт переход к процедуре и чтобы компьютер запомнил как вернутся обратно после выполнения процедуры он записывает в специальное место в памяти адресс кода откуда вызвана была процедура, это стёк
Работает по принципу последний зашел - первый вышел, как обойма пистолета.
Стек в процессоре хранит информацию для возврата в предыдущую точку, это тебе пригодиться только если асм будешь изучать, или низкоуровневую отладку через дебагер.
Никита Кузнецов
и совсем не гадость написали))
Это когда в программе вызывается процедура, идёт переход к процедуре и чтобы компьютер запомнил как вернутся обратно после выполнения процедуры он записывает в специальное место в памяти адресс кода откуда вызвана была процедура, это стёк
Timur Turdukojoev
Стёк)))
Стек это хлыст в БДСМ
Похожие вопросы
- Можно ли сказать, что стек - временный участок памяти, в котором данные хранятся по принципу LIFO(last in first out)?
- Помогите, пожалуйста, найти ошибку в программе сортировки стека (по убыванию ) на Си.
- Вопрос по С++. Стек
- Переменные и стек
- Что такое стек и куча? Они абстрактные понятия, или же конкретные? Очень сильно запутался.
- Помогите, пожалуйста, работа со стеками в среде С++.
- вопрос про стеки и очереди в паскале/с++
- Нужно в стеке найти первое появление т элемента и поставить его в начало стека. Помогите, пожалуйста!!!
- Вопрос о стеке и куче
- [Pascal] Создать очередь в виде кольцевого массива. Скопировать содержимое очереди в стек, который тоже в виде массива.