![]() |
|
Модераторы: bsa |
![]()
|
|
| Cybernetic10 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 5.5.2009 Репутация: нет Всего: нет |
Требуется создать массив указателей неизвестной длины. Причем пустых элементов в массиве ради экономии памяти быть не должно. То есть сначала я иду по массиву(размер текущего массива есть, nChilds), когда дохожу до конца, нужно в конец приписать еще один указатель.
Речь идет о деревьях. Суть - в каждой вершине должно быть не более N указаьелей на другие вершины. Но может быть и существенно меньще N. Поэтому нужно пополнять массив поэлментно. Использую realloc. Но запутался с указателями. Помогите пожалуйста поправить строку с realloc учитывая, что нужно писать в j-ый элемент массива До этого был j-1 элемент..
|
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
у тебя в той строке все в порядке.
Вот только ты уверен, что j будет не больше nChilds? |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 12 Всего: 72 |
Возможно, лучше будет такая структура:
Если не нужен поиск дочернего узла по идексу, а производится перебор только по порядку. realloc() не нужен. Если не нужен перебор в обратном порядке, можно обойтись без Node* prevBrother; |
|||
|
||||
| math64 |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 12 Всего: 72 |
В текущей реализации:
В createElement нужно добавить:
Перед realloc:
Удалять:
|
||||||
|
|||||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
math64, realloc может выступать и в качестве malloc (если передать NULL), и в качестве free (если передать нулевой размер области).
|
|||
|
||||
| Cybernetic10 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 5.5.2009 Репутация: нет Всего: нет |
math64, спасибо! Предложенный тобой альтернативный вариант структуры очень подходит для моей задачи. И не буду заморачиваться с указателями на указатели
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |