![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
lionwine |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 8.10.2014 Репутация: нет Всего: нет |
Привет, всем. Очень нужна помощь в проблеме удаления элемента (или хотя бы исключения его из списка). Удаляет строго 1 раз из любого места списка, затем при повторном программа вылетает. Просто, уже столько времени убил на безрезультатные попытки что-либо поменять. Пробовал запускать на разных компиляторах. Смотрел иные коды. Хелп, плиз!!! Случай 4.
MainClass.cpp
MainClass.h
start.cpp
|
||||||
|
|||||||
sQu1rr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 597 Регистрация: 11.11.2008 Где: london Репутация: 3 Всего: 13 |
Можно ли поинтересоваться, что принимает автор?
1. кол-во new не соответсвует кол-ву delete 2. while(!current == NULL) вау! пусть даже это и работает... 3. половина кода либо лишняя либо бесмысленная 4. что вообще происходит? Уберите пожалуйста все лишнее, абстрагируйте в функции 1. функция которая делает лист 2. функция которая добавляет элемент 3. функция которая убирает элемент без всяких там меню и так далее, и выложите этот код, тогда разберемся в чем у вас проблема (желательно что бы вы написали эту с нуля, продумывая что вы пишете). И не нужен закомментированый код. |
|||
|
||||
lionwine |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 8.10.2014 Репутация: нет Всего: нет |
Автор давно на кокаине и грибах, не удивляйтесь и, пожалуйста, распишите подробнее, что значит кол-во new не соответствует delete. Я удаляю только один элемент head. Остальное можно дописать. Но даже если не удалять а исключать из цепочки - все равно не работает. И что плохого в while. Проходится по списку
Это сообщение отредактировал(а) lionwine - 9.10.2014, 16:24 |
|||
|
||||
baldina |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
lionwine, отделите мух от котлет
узел списка
список
основная программа
|
||||||
|
|||||||
sQu1rr |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 597 Регистрация: 11.11.2008 Где: london Репутация: 3 Всего: 13 |
Например тут
создаете, а где удаляете? memory leak Или тут
Не правильно выразился, мой комментарий был по коду а не кокретно по функции удаления (точнее куску кода ответсвенного за удаления) Запись плохая. вы "отрицаете указатель", что впринципе будет работать, но вводит в заблуждения, так как переменная может быть не указателем (если смотришь конкретный фрагмент кода), а операция ! может быть переопределена для класса во что то другое. Плюс, в С++ не используется NULL. тут где то был уже пост почему. либо 0 либо nullptr. Да и к тому же есть хорошее правило, там где можно записать if/while(pointer) не нужно писать if/while(pointer ==/!= nullptr) - много букаф |
||||||
|
|||||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |