Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/56: Рейтинг темы: голосов - 56, средняя оценка - 4.54
 Аватар для GIGAbyte.
31 / 31 / 4
Регистрация: 27.08.2011
Сообщений: 148

Зачем нужны стеки (STACK) ?

08.01.2012, 16:42. Показов 12263. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, я уже 1,5 года учусь программировать на разных языках, в основном таких как
pascal, c++, php, и хочу в каждом научиться работать указателями, ссылками; При изучении я встретился с словом "STECK", я прочетал пару статей в интернете и представил что такое стек,
например тут:


Итак, что же такое структура данных Stack (Читается как Стэк) ? Чтобы было проще понять, представьте стопку книг. Если вы хотите положить книгу в стопку, то вы кладете ее наверх. А если хотите взять книгу, то сначала берете верхнюю. Вот стек делает то же самое.


Но не понял сам смысл стека, зачем нежен стек? что дает? это как некая память? Кто что знает? помогите хочу понять смысл и научиться работать с ними.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.01.2012, 16:42
Ответы с готовыми решениями:

Зачем нужны контейнеры stack, queue, list, если это всё можно заменить вектором?
В чём их преимущество? Оптимизация?

Задания на стеки/очереди (без шаблонных классов stack, queue)
Помогите, пожалуйста. Нужно добавить в очередь нечетные целые числа от -3 до 3. Все числа из очереди извлекать по одному и отрицательные...

Зачем биты нужны это меньше байтов но int 32 бита но я не допер зачем это нужно это 4 байта то есть int не может больше 4 байт весить?
Вот еще один вопрос зачем биты нужны это меньше байтов но int 32 бита но я не допер зачем это нужно это 4 байта то есть int не может...

4
49 / 49 / 8
Регистрация: 17.07.2011
Сообщений: 380
08.01.2012, 16:51
Цитата Сообщение от GIGAbyte. Посмотреть сообщение
Добрый день, я уже 1,5 года учусь программировать на разных языках, в основном таких как
pascal, c++, php, и хочу в каждом научиться работать указателями, ссылками; При изучении я встретился с словом "STECK", я прочетал пару статей в интернете и представил что такое стек,
например тут:


Итак, что же такое структура данных Stack (Читается как Стэк) ? Чтобы было проще понять, представьте стопку книг. Если вы хотите положить книгу в стопку, то вы кладете ее наверх. А если хотите взять книгу, то сначала берете верхнюю. Вот стек делает то же самое.


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

Вобще это очень понятно когда на ассемблере программируют: у нас в регистрах лежат значения и мы входим в процедуру которая выполняет некоторые операторы ассемблера(мы так написали процедуру что там несколько операторов и сейчас ее вызвали). Эти операторы могут использовать те области памяти, в которых у нас лежат нужные значения и мы не хотим потерять те значения(а это даже не видно - они так работают что определенная команда по умолчанию пользуется той-то и той-то областью памяти). Для этого мы помещаем их в стек, а после выхода из процедуры возвращаем их оттуда. В ассемблере стек - это специальная область памяти для всего вышенаписанного. Вобщем там это очень удобно.
2
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
08.01.2012, 17:05
Стек— структура данных, в которой доступ к элементам организован по принципу LIFO (last in — first out, «последним пришёл — первым вышел»). Что получить доступ к предпоследнему элементу, необходимо сначала взять последний. Добавление элементов осуществляется в вершину стека.
Это если вкратце.
1
08.01.2012, 17:09

Не по теме:

Цитата Сообщение от GIGAbyte. Посмотреть сообщение
Читается как Стэк
Цитата Сообщение от GIGAbyte. Посмотреть сообщение
"STECK"
пишется точно - стек - stack

1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,974
08.01.2012, 17:24
GIGAbyte., что такое массив, Вы себе представляете? Некоторый набор однотипных (не обязательно в php, всегда в С/С++) данных, к которым можно обращаться от перврго к последнему, от последнего к первому, или в произвольном порядке. Основная проблема, связанная с массивами - заранее определённый размер. Класс vector из STL на самом деле только создаёт видимость динамического мпссива, просто резервируется некоторое количество памяти, если её не хватает - выделяется больше и тоже с запасом. В случае, если произвольный доступ не нужен, но количество данных заранее не известно, вместо массива можно использовать список. Ну к примеру нужно получить некоторое количество данных и, не теряя их, найти наибольшее и наименьшее значения. Для этого достаточно весь список просмотреть один раз от первого до последнего значения. Дальше больше - очередь. Некоторая последовательность данных, которую нужно обработать в том же порядке, в котором они поступали, при чём после обработки данные уже не нужны. Очередь можно организовать как на основе массива (не лучшее на мой взгляд решение), так и на основе списка. Главное, что данные из неё будут обрабатываться по принципу "первым вошёл - первым вышел". Ну и собственно стек - обратный случай очереди. Данные обрабатываются в порядке, обратном поступлению ("последним вошёл - первым вышел"). Стек так же можно организовать как на основе массива, так и на основе списка. Но в отличии от очереди, стек, основанный на массиве - вполне разумное решение в том случае, если размер стека (максимальное количество данных, которые в нём могут разместиться) строго задан и наполнение, извлечение данных происходит достаточно часто, чтобы динамическое выделение памяти под них стало неэффективным. Области применения в пользовательских приложениях - собственно везде, где нужна обработка данных в порядке, обратном их поступлению...
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.01.2012, 17:24
Помогаю со студенческими работами здесь

Зачем нужны перечисления в С++?
int main(братья) Снова зову коллективный разум! Дошел в книжке до перечислений и не пойму зачем они вообще нужны, когда есть массивы и...

Зачем нужны деревья?
Изучил тему деревья (осуществлял втавки, удаление, обходы и т.д.). Теперь хочу разобраться, зачем они вообще нужны? В каких случаях надо...

Зачем нужны макросы?
Зачем нужны макросы?

Зачем нужны сортировки
Скажите пожалуйста, зачем при подготовке к олимпиаде по программированию, нужно учить алгоритмы: Быстрая сортировка, сортировка пузырьком и...

Зачем нужны исключения?
Добрый вечер, прочитал статью об исключениях, не очень понимаю, почему бы не заменить их просто оператором if? Вот код с исключением: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru