![]() |
|
Модераторы: bsa |
![]()
|
|
| Kemix |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 21.4.2012 Репутация: нет Всего: нет |
И ещё раз здравствуйте, уважаемое сообщество.
На этот раз проблема с ООП на базе C++. Задача:Дан список А, занести в список Б порядковые номера элементов содержащих максимум (т.е. могут быть несколько элементов содрежащих максимальное число). Проблема:При заполнении списка есть связь только между предпоследним и последним элементом списка. Код:
Заранее спасибо |
|||
|
||||
| feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
А то: Если при входе в функцию tmp есть NULL, то под него выделяется память и она же возвращается из функции. А если не NULL, тогда беда: В результате tmp перестаёт указывать на начало списка и начинает указывать на его конец. При добавлении нового элемента tmp начинает указывать на предпоследний элемент списка. Начало потеряно При работе со связными списками лучше всего называть начало списка head'ом, последний элемент - tail'ом. Тогда при чтении программы сразу возникнет вопрос: а чего это head изменяется, ведь не должен? При использовании имён типа tmp глаз замыливается... -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
| Kemix |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 21.4.2012 Репутация: нет Всего: нет |
Т.е. вы предлагаете заменить tmp на tail, но передавать в функцию указатель head, с которого tail и начнёт "прогонку" до NULL? |
|||
|
||||
| feodorv |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
Ага:
При этом head в else не меняется (у Вас - менялось) Было бы недурно сделать конструктор к spisok(num), который автоматом бы ставил next в NULL... -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
||||
|
|||||
| Kemix |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 21.4.2012 Репутация: нет Всего: нет |
Спасибо всем. Задача сдана.
Вот финальный код:
|
|||
|
||||
![]()
|
| Правила форума "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. |