![]() |
|
Модераторы: volvo877, Snowy, MetalFan |
![]()
|
|
| BaguK |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 3.11.2006 Репутация: нет Всего: нет |
Привет всем
Так вот мой вопрос? В книжке прочитал что стек можно представить в виде: списка и массива. По условию задачи требуется организовать стек при помощи массива. Я спросил у преподавателя какой мне массив использовать статический или динамический. Он ответил что динамический! Может мне кто-нибудь подсказать как организовать стек при помощи динамического сассива? |
|||
|
||||
| Nicholas_S |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 486 Регистрация: 12.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 19 |
BaguK, "Организовать структуру с использованием динамической памяти", здесь как раз имеются ввиду списки с динамическим выделением памяти, с использованием указателей. Массив предполагает статический размер стека, ограниченный длинной массива. Возможно, преподаватель имел ввиду все-таки списки.
Если все таки он имел ввиду именно _динамический массив_, стандартная реализация которых не имеется в Паскале (если ничего не путаю, поддержка начинается только с версии Delphi 4), то это можно реализовать с использованием тех же самых указателей, например:
Это что касательно только динамических массивов. Решение задачи оставляю другим. Добавлено @ 19:49 Да, чуть не забыл. Параметр для компилятора в начале листинга программы {$R-} обязателен. Служит он для того, чтобы компилятор не ругался на уход за границы массива. -------------------- ...все в мире относительно |
|||
|
||||
| BaguK |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 3.11.2006 Репутация: нет Всего: нет |
Nicholas_S, спасибо!!!
Во всех книгах которые смотрел, реализация стека делается с помощью динамического списка и статического массива. Похоже препод специально сказал, что бы труднее было. Но может кто-нибудь покажит пример организации стека при помощи динамического массива. И может кто-нибудь знает ссылки на учебники по САОДу! Зарание спасибо |
|||
|
||||
| anwe |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 748 Регистрация: 2.9.2006 Репутация: нет Всего: 23 |
|
|||
|
||||
| Nicholas_S |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 486 Регистрация: 12.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 19 |
anwe, не уверен, что код будет работать на Паскале
-------------------- ...все в мире относительно |
|||
|
||||
| volvo877 |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 2 Всего: 116 |
В том виде, в котором он приведен - не будет (Турбо Паскаль не работает с динамическими массивами), но это отнюдь не является непреодолимой преградой... Я о том, что написать свою функцию SetLength для массива, хранящего элементы определенного типа данных - не такая уж и большая проблема, достаточно описать тип массива как
и выделять в своей функции SetLength память для нового массива через GetMem, перемещая старый массив в новый функцией Move, и удаляя старый (немного неэффективно, конечно, но вполне даже работает)... |
||||
|
|||||
| BaguK |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 3.11.2006 Репутация: нет Всего: нет |
Вообщем я тут нашел. Препод ошибылся все таки эту структуру надо организовывать при помощи статического массива
Кто может привести примеры |
|||
|
||||
| Nicholas_S |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 486 Регистрация: 12.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 19 |
volvo877, оргинизацию именно _динамического_ массива на паскале в привел в самом начале топика.
-------------------- ...все в мире относительно |
|||
|
||||
| BaguK |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 3.11.2006 Репутация: нет Всего: нет |
На Паскале нет такой процедуры Это сообщение отредактировал(а) BaguK - 5.11.2006, 21:35 |
|||
|
||||
| Zero |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2169 Регистрация: 23.10.2004 Где: Россия, г. Рязань Репутация: нет Всего: 24 |
||||
|
||||
| volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 2 Всего: 116 |
Nicholas_S, то, что ты привел - это реализация массива, хранимого в "куче". Но размеры его ты не поменяешь... А я предложил именно динамический массив, с возможностью изменения его размеров. Поскольку изначально автор хотел реализовать стек, то твоя реализация так же не помогла бы ему, как и простой статический массив, ибо у нее жестко задан размер...
Читай внимательно... |
|||
|
||||
| Nicholas_S |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 486 Регистрация: 12.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 19 |
volvo877, никто не мешает тебе добавить то же самое копирование памяти, которое ты предложил, написав свою SetLength().
Реализацию самой задачи я предоставил другим. -------------------- ...все в мире относительно |
|||
|
||||
| BaguK |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 3.11.2006 Репутация: нет Всего: нет |
Сделал лабу.
Если есть какие-нибудь предложения по этой работе, то делитесь пожалуйста |
|||
|
||||
![]()
|
| Правила форума "Delphi" | |
|
|
Запрещается! 1. Обсуждать и делится взломанными компонентами или программным обеспечением 2. Публиковать ссылки на варез 3. Оффтопить
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |