![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| knut |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 7.2.2006 Репутация: нет Всего: нет |
Добрый день.
У меня такой вопрос. Как вставить узел в список по индексу?
--------------------
|
||||
|
|||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
нихт не понял. вставить куда? что это за функция? проблема в чем?
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
Пробегать от начала списка и считать элементы, когда встретишь нужный номер - вставляй новый
|
|||
|
||||
| knut |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 7.2.2006 Репутация: нет Всего: нет |
вставить надо в список. --------------------
|
||||
|
|||||
| zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
по крайней мере надо знать что такое cList
|
|||
|
||||
| knut |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 7.2.2006 Репутация: нет Всего: нет |
не понял а что это значит? --------------------
|
||||
|
|||||
| zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
||||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
что это за список (его организация) это значит что нужно знать что такое cList (судя по названию это самоклепный класс). так же это значит что кроме автора класса (и возможно справки) этого никто не знает: например в моем самоклепном классе bList вставка узла по индексу осуществляется функцией Delete(void). и я так и не понял проблемы: функцию для втавки ты знаеш, ее параметры тоже. что мешает ее использовать? -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| knut |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 7.2.2006 Репутация: нет Всего: нет |
Add_Begin(cList var) and Add_End(cList var) писать не буду (не кого не удевлю я этим) а вот теперь как собственно реализовать Add(int position,cList var) т.е вставка в список по индексу --------------------
|
||||
|
|||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
ааа... т.е. тебя алгоритм интересует? -- так бы сразу и говорил...
делается это очень легко -- проходиш последовательно по всем елементам (начиная с первого) и увеличиваеш счетчик. когда он == индексу (или индексу+-1 (зависит от реализации)) делаеш: -- запоминаеш куда-нить следующий елемент -- перекидываеш его (текущего елемента) *next на вставляемый елемент -- вставляемому ставиш *prev на текущий елемент -- запомненому "следующему" ставиш *prev на вставляемый елемент -- вставляемому елементу ставиш *next на запомненый "следующий" все... -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| knut |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 7.2.2006 Репутация: нет Всего: нет |
что за проблемма не пойму делаю так вдоди все должно работать
--------------------
|
||||
|
|||||
| zkv |
|
||||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
а index это что такое, где сбрасывается, и зачем в конце увеличивается?
что то страшное здесь происходит
что типа этого должно быть наверное:
|
||||
|
|||||
| knut |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 7.2.2006 Репутация: нет Всего: нет |
zkv, а что не так в коде?
--------------------
|
|||
|
||||
| zkv |
|
||||||||||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
ну давайте посмотрим, судя по этой строчке: root->next->prev = Add_object; я понял, что вы хотите вставить Add_object в список после root объект с адресом root условно назовем A, Add_object - B, а root->next - С. требуется выстроить их в цепочку A-B-C. Что имеем сейчас (состояние объектов на 11 строке вашего кода):
после строки root->next->prev = Add_object; (root->next соответствует C, помните мы договорились
далее строка Add_object->prev = temp->prev; Так, здесь была моя ладья temp == root (судя по 11 строке вашего кода) что в свою очередь соответствует A, Add_object соответствует B получаем:
ну и завершаем выстраивание строкой Add_object->next = temp; те B.next указывает на A. Смотрим:
а хотелось бы получить:
Видите разницу, приведенный мною код я уж не буду комментировать, посмотрите сами, что происходит. Удачи! |
||||||||||
|
|||||||||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |