|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
11.11.2009, 13:05 | #1 |
Форумчанин
Регистрация: 24.05.2009
Сообщений: 119
|
Массив указателей (паскаль)
Всем привет!
задание такое - создать массив из динам-х очередй со всеми типовыми опеерациями для данной струк-ры Это все я представляю так - создается некий массив, элементами которого должны быть собственно очереди, а очереди заполняются нашими данными (например с типом integer) Я решила, что данную струк-ру можно реализовать с помощью массива указателей... Я описала структуру и операции с очередью (дабавление, просмотр, удаление), но я не могу разобраться как работать с таким массивом, т.е. как добавить новый элемент (очередь) в такой массив ??? как сделать просмотр этого массива ??? как удалить элемент из такого массива ??? Прошу вашей помощи.... Пожалуста помогите разобраться.... Вот мое описание структуры Код:
вот процедуры для очереди Код:
а вот операции с массивом, то что пока сама смогла сделать... Код:
Код:
Последний раз редактировалось diliana; 11.11.2009 в 22:00. |
11.11.2009, 13:23 | #2 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
1. Хранил в некой переменной индекс последнего элемента, массива, всмысле последнего не пустого. 2. при добавлении ты создаешь через new очередь, и адрес на нее (имеется ввиду на ее голову) пишешь в массив[его последний элемент] предварительно увеличив его последний элемент на единицу и проверив не вылезает ли он за пределы.
I'm learning to live...
|
|
11.11.2009, 14:00 | #3 |
Форумчанин
Регистрация: 24.05.2009
Сообщений: 119
|
Stilet
А вы можете это показать, теоритически я это представляю, но как практически реализовать ??? |
11.11.2009, 14:40 | #4 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Да запросто:
Код:
I'm learning to live...
|
11.11.2009, 15:10 | #5 |
Форумчанин
Регистрация: 24.05.2009
Сообщений: 119
|
Код:
Последний раз редактировалось diliana; 11.11.2009 в 21:59. |
11.11.2009, 23:52 | #6 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
diliana, ну, я полностью согласен с мнением Виталия... единственное, что он не реализовал то, что сам и предложил - проверку того, что мы не достигли границы массива:
Код:
Смотрите. создаём массив указателей. массив задаём СТАТИЧЕСКИЙ. размер - произвольно, заведомо большой, желательно больше, чем всего может быть очередей. Ну, например, как у Вас: N = 100 Дальше. Вводим переменную, которая показывает, какой последний элемент в массиве занят. Так сказать, указатель "хвоста" массива... в примере Виталия: lastA:=0; // Это индекс последнего элемента дальше. когда надо создать очередь, то мы увеличиваем индекс и указатель на созданную очередь записываем по этому индексу. никакие HeadQ нам не нужны, так как I-й элемент массива - это как раз указатель на первый (головной элемент) I-й очереди... Возникает одна проблемка с удалением очереди из массива... НУ, скажем, хотим удалить очередь с индексом K ну, сначала, разумеется удаляем элементы очереди (причём в цикле начиная от последних), но потом надо очистить MASS[K] (или A[K] - в примере Виталия). Но тут можно "в лоб" - просто все элементы массива, начиная с K+1 и до lastA переписать на место предыдущего: MASS[K] := MASS[K+1] MASS[K+1] := MASS[K+2] и т.д. а потом уменьшаем lastA на единицу.... подумайте немножко... нарисуйте на бумажке.. поверьте, ничего в этом сложного нет! p.s. Если всё равно непонятно - тогда я могу набросать примерчик... но уж извините, только завтра днём... |
12.11.2009, 09:21 | #7 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Просто отсекать те элементы которые NIL и не париться... Впрочем: Код:
Цитата:
item^.i:=10; Во вновь созданный элемент помещаем некие данные (это пример не более)
I'm learning to live...
|
||
12.11.2009, 11:29 | #8 |
Форумчанин
Регистрация: 24.05.2009
Сообщений: 119
|
Вот написала так, но при выполнениии вылетает...
Где я ошибаюсь ? Код:
|
12.11.2009, 12:21 | #9 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
12.11.2009, 12:59 | #10 |
Форумчанин
Регистрация: 24.05.2009
Сообщений: 119
|
Stilet
А почему вы не говорите, правильно или нет, сделан код процедуры добавления очереди в этот массив??? |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перепись значений в массив указателей. | Джед | Общие вопросы C/C++ | 9 | 28.05.2009 18:12 |
Массив. Паскаль | Fintos | Помощь студентам | 1 | 24.04.2009 04:37 |
массив указателей на методы класса? | cout | Общие вопросы C/C++ | 2 | 08.05.2008 09:43 |
Массив указателей на структуры | SNAKE89 | Общие вопросы C/C++ | 4 | 27.12.2007 10:14 |