| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Динамический массив |
| Автор: SlaUr 21.4.2004, 07:12 |
| Вот забыл как это делается. Нужен пример динамического массива (одномерного) на паскале. Нужно: Создание нового элемента,обращение к заданному элементу,Удаление элемента массива. |
| Автор: Guest 21.4.2004, 08:21 | ||
Да при попытки обратиться к несуществующи элементам массива ошибка не возникает - буть осторожени |
| Автор: x77 21.4.2004, 10:16 | ||
это разве на паскале? я всю жизнь тупил следующим образом:
с обращением всё понятно, я думаю, а насчёт добавления и удаления: я обычно создаю новый массив, в который копирую нужные мне элементы. возможно, наверное, перераспределить память, но я так никогда не делал, потому что в результате всяких ReAlloc'ов может измениться сам пойнтер (при добавлении элемента менеджер памяти пожет засунуть его куда угодно, если он не влазит на старое место, и пойнтер после операции может указывать сосвсем в другое место). ничего страшного в этом нет, но... не нравится мне, в общем: как-то надёжнее кажется создать новый массив самому. |
| Автор: SlaUr 21.4.2004, 11:07 | ||||
В Паскале такой массив не определяется - это наверное только для delphi
Мне нужна именно возможность добавлять и удалять элементы. Был у меня хороший пример на паскале , да вот не могу найти :-( Помню только что там в типе каждого элемента массива был указатель на следующий элемент массива |
| Автор: x77 21.4.2004, 11:31 | ||
SlaUr, не путай, это стеки, или очереди. динамические массивы делаются именно так, как я тебе написал. но это не единственный способ, можно и по другому:
ну и т.д., влом писать. смысл в том, что каждый элемент ссылается на предыдущий, а первый ссылается на 0. доступен массив начиная с первого элемента. добавление я привёл, при удалении i-го элемента пробегаем в цикле по всем записям (while Next <> nil - т.е., до последнего элемента), на нужной - переприсваиваем Next, саму запись - освобождаем, и вываливаемся из цикла. доступ - по тому же принципу, циклом. собственно, это уже и есть очереди. по технологии доступа, по крайней мере, только в очередях можно было работать только с последним элементом, а здесь - с любым. Добавлено @ 11:38 наврал. "каждый элемент ссылается на предыдущий, а первый ссылается на 0" - каждый элемент ссылается на следующий, а последний - на 0. туплю, сорри. |
| Автор: poc 21.4.2004, 11:48 |
| Please, напишите код нахождения 10000 простых чисел(Решето Эратосфена) |
| Автор: SlaUr 21.4.2004, 13:00 |
| x77 Спасибо попробую что-нибудь изобразить (просто хорошие люди попросили сделать задание на Pascal) |