27 / 1 / 0
Регистрация: 29.06.2011
Сообщений: 136
|
|
1 | |
Куда помещается элемент в стеке?09.04.2012, 14:35. Показов 1300. Ответов 12
Метки нет (Все метки)
В разделе про работу функции сказано, что для этого применяется стек. И всё это описано.
Есть такая фраза, цитирую:
0
|
09.04.2012, 14:35 | |
Ответы с готовыми решениями:
12
Найти в стеке самый максимальный элемент и удалить его Как в стеке найти масимальный и минимальный элемент и удалить между ними цифры Создать стек из вещественных чисел; найти максимальный элемент в стеке; организовать просмотр данных стека Удалить десятый элемент в стеке |
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
09.04.2012, 14:39 | 2 |
Alex Z, Ну при добавлении элемента элемент сначала размещается над вершиной стека, затем он становится вершиной. Что не ясно?
0
|
27 / 1 / 0
Регистрация: 29.06.2011
Сообщений: 136
|
|
09.04.2012, 14:40 [ТС] | 3 |
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
09.04.2012, 14:44 | 4 |
Alex Z, Хм. Вкратце.
Стек : a b c d. элемент со значение d - вершина стека. Мы хотим положить в стек элемент со значением e. Создали узел. Стек : a b c d. Узел : e. Добавили наш узел в стек. Стек : a b c d e. элемент со значением e - вершина стека.
0
|
27 / 1 / 0
Регистрация: 29.06.2011
Сообщений: 136
|
|
09.04.2012, 14:52 [ТС] | 5 |
Как-то не так. Если у нас стек из 4-х элементов: a, b, c, d. То пусть они занимают ячейки в памяти с номерами: 1, 2, 3, 4. Тогда указатель на вершину стека будет смотреть на ячейку 5, но там нет элемента. А если я пихаю туда элемент c, то он по-идее должен попасть именно в вершину стека (то есть в ячейку 5). А потом указатель на вершину смещается и показывает на ячейку 6. Мне показалось так.
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
09.04.2012, 14:54 | 6 |
Alex Z, Нет. Указатель на вершину стека - указывает на элемент находящийся на вершине.
Т.е. Стек : a b c d. Вершина - указатель на элемент d.
0
|
27 / 1 / 0
Регистрация: 29.06.2011
Сообщений: 136
|
|
09.04.2012, 14:56 [ТС] | 7 |
А в книге он указывает выше последнего элемента. Значит ошибка в рисунке, а не в тексте.
0
|
Higher
|
|
09.04.2012, 14:57 | 8 |
Вы про ассемблер что ли?
Если да, то там элементы заполняются сверху вниз, допустим esp(вершина стека) указывает на участок памяти 0x12345, мы делаем push(добавляем в стек переменную, допустим, 4 байта), адрес становится равным 0x12341.
1
|
27 / 1 / 0
Регистрация: 29.06.2011
Сообщений: 136
|
|
09.04.2012, 14:58 [ТС] | 9 |
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
09.04.2012, 14:59 | 10 |
Alex Z, Вообще по сути call-stack реализован либо на С, либо на асме. А вы судя по всему спрашиваете именно про call-stack.
0
|
27 / 1 / 0
Регистрация: 29.06.2011
Сообщений: 136
|
|
09.04.2012, 15:01 [ТС] | 11 |
Я не знаю. Просто стек. Так написано в книге "Либерти - С++ за 21 день". Стр. 130.
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
09.04.2012, 15:17 | 12 | |||||
Пример.
1
|
Higher
|
|
09.04.2012, 15:20 | 13 |
Все там правильно написано.
Допустим, есть стек(заполняется снизу вверх): a <- вершина стека b c Ложим туда элемент d, получается d a <- вершина стека b c Затем изменяем указатель вершины стека, получается d <- вершина стека a b c Т.е. вы слишком буквально воспринимаете фразу "вершина стека", в данном случае она обозначает указатель, а вовсе не самый верхний элемент.
1
|
09.04.2012, 15:20 | |
09.04.2012, 15:20 | |
Помогаю со студенческими работами здесь
13
Найти элемент с заданным ключом в стеке В стеке найти элемент по заданному ключу Написать алгоритм сортировка вставками: очередной элемент помещается по месту своего расположения в выходную Если создать указатель на переменную, созданную в стеке, переменная перемещается в кучу? Или остается в стеке? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |