![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Goryachev |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 23.2.2005 Где: Израиль Репутация: нет Всего: нет |
Задача:
Сделать двухсторонний список, пользуясь одним указателем в структуре, и двумя внешними указателями на список. Обсудите. Ответ приведу позже. |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 2 Всего: 99 |
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| Олег М |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 436 Регистрация: 10.6.2004 Где: Москва Репутация: 7 Всего: 7 |
|
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 2 Всего: 99 |
Я бы только сказал, p1->item - в сторону текущего элемента, а p2->item в сторону его предыдущего элемента... Уж больно трудно в таком списке сказать где голова, а где хвост... -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
что такое двусторонний список? -------------------- qqq |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
список, двжение по элементам которого возможно и вперед и назад
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
тогда не надо даже двух внешних указателей (достаточно одного)...
просто делаем кольцевой список, движение вперед - как обычно, движение назад - двигаемся вперед, пока не найдем элемент, который указывает на исходный Это сообщение отредактировал(а) maxim1000 - 31.3.2005, 14:44 -------------------- qqq |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
а если элементов много? слишком долго ходить придется...
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| maxim1000 |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
а о времени речь не шла
-------------------- qqq |
||||
|
|||||
| Олег М |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 436 Регистрация: 10.6.2004 Где: Москва Репутация: 7 Всего: 7 |
|
|||
|
||||
| Goryachev |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 23.2.2005 Где: Израиль Репутация: нет Всего: нет |
cardinal
Очень круто все сделанно, но у тебя список изменяется динамически, итого: чтоб завершить работу с таким списком (если параметры by value), то надо будет возвращаться до начала обратно, чтоб плменять поинтеры на их начально правильное положение. Теперь подумайте, как это сделать, не изменяя динамически поинтеры. |
|||
|
||||
| cardinal |
|
||||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 2 Всего: 99 |
Это чтобы delete сделать чтоли? А я его так сделаю: См. шаг три. Я рекурсивно спущусь по p1 и p2 функцией, которая будеть выглядеть примерно так функция (получает поинтер x) { if pointer(элемента) <> NULL ,то функция(pointer(элемента)); else delete x; }
Может позже... -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
||||
|
|||||
| yaja |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 30.3.2005 Где: Санкт-Петербург Репутация: 1 Всего: 1 |
Не понял (((
По определению двунаправленный список, ето такая хрень, в которой для любого элемента можно получить предыдущий и следующий. Однако, при предложенных требованиях, очевидно, ето сделать нельзя. Т.ч уточните, что должен делать етот "список" ))) |
|||
|
||||
| Goryachev |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 23.2.2005 Где: Израиль Репутация: нет Всего: нет |
Не совсем. Если ты киваешь на определенный элемент, то можешь получить предыдущий и следующий. Решение дам в субботу. Еще есть время подумать... Это сообщение отредактировал(а) Goryachev - 4.4.2005, 22:21 |
|||
|
||||
| yaja |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 30.3.2005 Где: Санкт-Петербург Репутация: 1 Всего: 1 |
Что-то мне в голову такой изврат пришел в голову...
Будем хранить не указатель в каждом элементе, а xor указателей на предыдущий и на следущий, а внешние указатели будут хранить текущий элемент(p1) и элемент(p2) из которого мы пришли в p1. Тогда указатели на следущий и предыдущий элемент - p2 и (p1->xoredPointer) ^ p2 в зависимость откуда мы пришли в p1. Вроде должно работать |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |