![]() |
|
Модераторы: bsa |
![]()
|
|
| Firex |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 20.10.2010 Репутация: нет Всего: нет |
Достопочтенные форумчане, подскажите по коду. Есть класс графа:
и методы:
Вопроса: куда "указывают" указатели Head и Tail при инициализации конструктором? Или так, куда "указывает" указатель переменной h в методе SearchGraph при первом обращении к нему? |
||||||
|
|||||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
||||
|
||||
| Firex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 20.10.2010 Репутация: нет Всего: нет |
У меня такие же сомнения, но код взят отсюда: http://khpi-iip.mipk.kharkiv.edu/library/d...u/din_0085.html, компилируется и работает правильно...
|
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
оно работает правильно потому что
а Tail == Head после инициализации. в первый раз я невнимательно посмотрел. но код ужасный, какая то смесь C и C++. Добавлено через 3 минуты и 49 секунд поглядел Вирта. действительно, у него tail всегда указывает на новый (выделенный) узел, который еще не используется |
|||
|
||||
| Firex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 20.10.2010 Репутация: нет Всего: нет |
Спасибо, вроде бы дошло. Хотя всё равно, после инициализации Head==Tail и указатели содерджат мусор, а (*Tail).Key=w происходит уже после h=Head. Т.е. в h мусор?
Это сообщение отредактировал(а) Firex - 23.4.2012, 13:46 |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
h=Head=Tail => h->key == Head->key == Tail->key == w
Это сообщение отредактировал(а) baldina - 23.4.2012, 15:38 |
|||
|
||||
| Firex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 20.10.2010 Репутация: нет Всего: нет |
Вот теперь ясно, спасибо!
|
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
Firex, возможно, Вам интересно будет сравнить разные варианты:
однонаправленный список реализуется очень просто, псевдоэлементов не требуется http://codepad.org/hoYgZQLg двунаправленный список без последнего ограничивающего элемента http://codepad.org/d8bPn5JN двунаправленный список с ограничивающим элементом http://codepad.org/f6rN0fol сравните последние две версии: при наличии ограничивающего элемента добавление становится проще. проход по списку теперь ограничивается этим элементом, а не 0 для краткости освобождение памяти я опустил если вставки очень частые, разница будет в пользу второго варианта если списки часто создаются, но часто пустые - в пользу первого хотя во всех случаях разница очень невелика с точки зрения понимания и применения - вопрос вкуса |
|||
|
||||
| Firex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 20.10.2010 Репутация: нет Всего: нет |
baldina, благодарю, полезно.
|
|||
|
||||
![]()
|
| Правила форума "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. |