![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
madbizarre |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 13.11.2006 Репутация: нет Всего: нет |
В однонаправленном списке пытаюсь удалить каждый 3 элемент.
После ввода значений, выдает ошибку... Подскажите что я не правильно делаю! |
|||
|
||||
Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 11 Всего: 88 |
Счас придёт Чоо и всё тебе подробненько расскажет...
![]() -------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
Чoо |
|
||||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 22.9.2009 Репутация: 4 Всего: 4 |
а Чоо в последнее время разленился и ни чо не расскажет
![]()
Читаю: если указатель на следующий элемент равен нулю, то указатель на следующий элемент равен указателю, на следующий элемент после следующего (который равен нулю), а такого быть не может. ну а дальше не смотрел, так как подозреваю, что там такое же.. Вообще инструкций такого вида советую избегать:
если и получится что-нибудь сваять, то прежде чем получится, замучаетесь с отладкой. а хотя... гляну чо там дальше... значит, если указатель после curr если не равен NULL выполняем следующее:
следующий элемент за curr равен следующему после следующего временный элемент равен тому же следующему после следующего (соответственно получаем утечку, так как потеряли указатель на первоначальный curr->next) потом забываем о наших всех манипуляциях и убиваем элемент curr. А потом, в довершение всего, делаем новую утечку, меняя указатель curr, который еще указывает на некую область памяти, на элемент, который изначально следовал за следующим после следующего. Честно говоря, не хочется думать, как в маин происходит вычисление каждого третьего элемента. небольшое замечание по ипользованию постфикса в p++. Хоть в данном случае ошибок нет и не может быть, лучше привыкать к префиксному варианту: поможет избежать в будущем неявных ошибок. Дело в том, что ++p возвращает новое значение, хранящееся в p, а p++ возвращает значение, которое было до инкремента (хотя в обоих случаях p инкрементируется). Добавлено @ 00:49
вот тут.. тут достаточно хранить один указатель на голову списка. Текущий элемент можно передавать в функцию. Добавлено @ 00:55
может все-таки:
? вопщем. посоветую разбить решение задачи на 3 подзадачи: 1. Составление списка 2. Вывод списка. 3. Удаление элемента из списка. Когда список будет нормально составляться, то можно приступать к функции его вывода. Как только функция готова, приступаем к удалению (для наглядности после каждого удаления можно выводить список на экран). Это сообщение отредактировал(а) Чoо - 15.12.2010, 01:00 -------------------- ![]() OS: Debian Squeeze (kernel 3.8.2) IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2 |
||||||||||||
|
|||||||||||||
Чoо |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 22.9.2009 Репутация: 4 Всего: 4 |
примерно вот так будет выглядить вся задача:
-------------------- ![]() OS: Debian Squeeze (kernel 3.8.2) IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2 |
|||
|
||||
madbizarre |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 13.11.2006 Репутация: нет Всего: нет |
Спасибо очень помог...
Можешь еще подсказать вот такую задачу... Реализовать в виде программы заданный набор операций (поиск, объядинение, разность, пересечение) с использованием управляющей структуры данных - двоичного дерево (дерева двоичного поиска). Прочитал много по двочному дереву, но нигде не нашел примера объядинения разности и пересечения, можешь по пунктам расказать что от меня требуется, если не сложно лёгкие примеры алгоритмов |
|||
|
||||
Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 11 Всего: 88 |
А что, нормалёк, по-моему. Получай по репе... ![]() -------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 11 Всего: 88 |
Хотя мне больше импонирует как-то так
-------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
Чoо |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 22.9.2009 Репутация: 4 Всего: 4 |
ну да, удаление каждого третего логичней всего было отправить в функцию
![]() ну и с указателями на указатели я пока еще путаюсь, потому пока что предпочитаю без них обходиться ![]() Это сообщение отредактировал(а) Чoо - 15.12.2010, 23:52 -------------------- ![]() OS: Debian Squeeze (kernel 3.8.2) IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2 |
|||
|
||||
madbizarre |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 13.11.2006 Репутация: нет Всего: нет |
Так что по поводу дерева?
|
|||
|
||||
Чoо |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 22.9.2009 Репутация: 4 Всего: 4 |
дерево делать не буду. там немного больше теории и больше кода.
вопщем элементом бинарного дерева будет:
тоесть каждый элемент имеет связь с предшествующим ему узлом и двумя дочерними. при построении должно соблюдаться следующее правило:
если его строить, руководствуясь этим правилом, получим бинарное дерево поиска, иначе - просто бинарное дерево. -------------------- ![]() OS: Debian Squeeze (kernel 3.8.2) IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2 |
||||
|
|||||
madbizarre |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 13.11.2006 Репутация: нет Всего: нет |
Да это то понятно я литературу читал. Меня интересует пересечение, разность, обьядинение. Как реализовать? Это множества? Или в деревьях как то иначе
|
|||
|
||||
Чoо |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 22.9.2009 Репутация: 4 Всего: 4 |
не знаю -------------------- ![]() OS: Debian Squeeze (kernel 3.8.2) IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |