|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
21.05.2023, 14:09 | #1 |
Регистрация: 08.04.2023
Сообщений: 9
|
Удалить все эл-ты двусвязного списка, находящиеся между его минимальным и максимальным эл-тами
Помогите, пожалуйста
Требуется удалить все эл-ты двусвязного списка, находящиеся между его минимальным и максимальным эл-тами. Информационную часть в операционной системе не перемещать. В конце освободить всю динамическую память. Минимальный и максимальный эл-ты я нашла, а вот удаление (void del_between()) не очень понимаю как реализовать Код:
|
21.05.2023, 17:54 | #2 |
Форумчанин
Регистрация: 20.12.2016
Сообщений: 270
|
Если оставаться в рамках текущей реализации, то я бы добавил счетчик позиции для min и max, чтобы понимать, left или right указатель изменять у соответствующих TNodes.
Как вариант, можно добавить два приватных члена класса к list. Не забывая очищать их после обрезания и проверять перед обрезанием, на случай, если обрезать нечего. Код:
Так же стоит указать, что код ищет только первые минимум и максимум. И на сладкое, я бы написал функцию для тестирования, простейший unit test, типо такого: Код:
Код:
формошлеп.рф
witech.su Последний раз редактировалось maks1331; 21.05.2023 в 18:32. |
21.05.2023, 21:48 | #3 |
Регистрация: 08.04.2023
Сообщений: 9
|
А что делает функция free(saveToFree)?
я не очень понимаю |
21.05.2023, 22:06 | #4 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,343
|
Думаю, free приблудилась из C, делайте delete. Еще стоит добавить проверку front в функции pop, а не лезть сразу по указателю front->right, т.к. список может быть пуст.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
22.05.2023, 15:29 | #5 |
Регистрация: 08.04.2023
Сообщений: 9
|
У меня еще иногда высвечивается исключение в строке
Код:
min->right было nullptr." |
22.05.2023, 17:06 | #6 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,343
|
Почему-то пролетаете мимо максимума до конца списка. Как выставляете min_pos в search_min и max_pos в search_max?
А еще в del_between после цикла нужно сделать max->left = min, чтобы сохранить двусвязность списка.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Произведение между максимальным и минимальным значениями массива | Maxim93m | Общие вопросы C/C++ | 4 | 19.11.2014 19:55 |
Удалить элементы в массиве, стоящие между максимальным и минимальным элементами | Tkas | Помощь студентам | 0 | 04.03.2012 16:50 |
Дан массив [3*4]. Определить разницу между максимальным и минимальным значениями. | vbchristy46 | Помощь студентам | 7 | 15.06.2010 23:29 |
Разность между максимальным и минимальным значениями | StudeHt | Помощь студентам | 7 | 23.04.2009 22:26 |