![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 30.08.2011
Сообщений: 7
|
![]()
Здравствуйте, знаю, что есть много литературы и примеров кода по этому вопросу, но мне непонятно все же. Дали "шаблон задания", выглядит так
Код:
Код:
Помогите, пожалуйста, разобраться. |
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 23.12.2010
Сообщений: 1,129
|
![]()
Это - достаточно нетипичный шаблон для стека, обычно учат хранить связный список внутри объекта. Тут тебе придется извращаться как-то так, например:
Код:
|
![]() |
![]() |
![]() |
#3 |
Регистрация: 30.08.2011
Сообщений: 7
|
![]()
Спасибо большое! Я правильно понимаю, что
Код:
Код:
И ещё вопрос как можно вывести все элементы, содержащиеся у меня в стеке? Через next[i].value? Или это совсем бред? |
![]() |
![]() |
![]() |
#4 |
Участник клуба
Регистрация: 23.12.2010
Сообщений: 1,129
|
![]()
Мы создаем новый элемент; записываем в него то, что было раньше записано в вершине стека; вместо этого в вершину записываем новое значение; а потом полю next новосозданного элемента присваиваем то, что было в поле next вершины. Проще говоря - вставляем новый элемент в цепочку между вершиной и следующим за ней элементом, если он был. Если его не было - в его поле next просто запишется 0 и ничего страшного не случится
![]() А перебирать элементы проще всего через несколько последовательных вызовов pop (только ее сначала придется написать, да). А через next[i] обращаться нельзя, это ж единственный указатель ) |
![]() |
![]() |
![]() |
#5 |
Регистрация: 30.08.2011
Сообщений: 7
|
![]()
..., я прошу прощение за свою тупость, но можете ещё объяснить, как вообще происходит запись в стек? Никак я не понимаю, куда вообще записывается что, и как к этой записи обращаться.
Вот у меня изначально создается объект - Stack s(10), значение 10 записывается в value, затем, по методу s.push(7) создается новый элемент и записывается значение 7, опять же в value, но уже нового элемента? Т.е. выделяется ещё одна ячейка памяти под этот элемент? Если да, то как к ней обратиться? И еще вопрос, вот у меня записано в стеке 10,7,8. Если я пишу Stack::value, он у меня выводит соответственно, последнее записанное значение - 8. В методе pop() получается я должна вывести, находящееся значение в стеке и удалить это значение, вот это самое 8, и при повторном вызове pop() у меня уже в стеке будет храниться уже предыдущее значение -7. Так? |
![]() |
![]() |
![]() |
#6 | |
Форумчанин
Регистрация: 01.07.2011
Сообщений: 423
|
![]() Цитата:
То есть операция просмотра стека связана с операцией последовательного удаления из стека элементов. В этом и состоит суть стека. Но у вас в дизайне вашего стека есть проблема. Когда у вас в стеке один элемент, то не понятно, как его удалить и какое при этом будет состояние стека.
Со мной можно встретиться на www.clipper.borda.ru
|
|
![]() |
![]() |
![]() |
#7 |
Участник клуба
Регистрация: 23.12.2010
Сообщений: 1,129
|
![]()
Все правильно, да. Только тебе все же придется чуть переделать этот "шаблон" - внести связный список внутрь объекта полностью. Иначе функции push и pop получатся чересчур эзотеричными )
В общем, добавься ко мне в аську, если еще будут вопросы, там удобнее разбираться. |
![]() |
![]() |
![]() |
#8 |
Регистрация: 30.08.2011
Сообщений: 7
|
![]()
Спасибо, вроде разобралась =), вот, что у меня вышло
Код:
Пробовала писать Head -> value = _value в конструкторе, выводит ошибку Необработанное исключение в "0x013814fc" в "stack22.exe": 0xC0000005: Нарушение прав доступа при записи "0xccccccd0". |
![]() |
![]() |
![]() |
#9 |
Участник клуба
Регистрация: 23.12.2010
Сообщений: 1,129
|
![]()
Осталось добавить в конструктор строчку
Код:
|
![]() |
![]() |
![]() |
#10 |
Регистрация: 30.08.2011
Сообщений: 7
|
![]()
Спасибо огромное!!! =)
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Реализация стека | basilius90 | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 03.06.2010 17:01 |
C++, реализация стека | OffyGhost | Помощь студентам | 2 | 28.03.2010 07:02 |
Реализация стека на С | Angriff | Помощь студентам | 14 | 01.03.2010 10:51 |
Реализация Стека | MjRed | Общие вопросы C/C++ | 3 | 13.05.2009 12:18 |