![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 08.04.2023
Сообщений: 6
|
![]()
Помогите, пожалуйста
![]() Требуется удалить все эл-ты двусвязного списка, находящиеся между его минимальным и максимальным эл-тами. Информационную часть в операционной системе не перемещать. В конце освободить всю динамическую память. Минимальный и максимальный эл-ты я нашла, а вот удаление (void del_between()) не очень понимаю как реализовать Код:
|
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 20.12.2016
Сообщений: 270
|
![]()
Если оставаться в рамках текущей реализации, то я бы добавил счетчик позиции для min и max, чтобы понимать, left или right указатель изменять у соответствующих TNodes.
Как вариант, можно добавить два приватных члена класса к list. Не забывая очищать их после обрезания и проверять перед обрезанием, на случай, если обрезать нечего. Код:
Так же стоит указать, что код ищет только первые минимум и максимум. И на сладкое, я бы написал функцию для тестирования, простейший unit test, типо такого: Код:
Код:
формошлеп.рф
![]() witech.su Последний раз редактировалось maks1331; 21.05.2023 в 18:32. |
![]() |
![]() |
![]() |
#3 |
Регистрация: 08.04.2023
Сообщений: 6
|
![]()
А что делает функция free(saveToFree)?
я не очень понимаю |
![]() |
![]() |
![]() |
#4 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,124
|
![]()
Думаю, free приблудилась из C, делайте delete. Еще стоит добавить проверку front в функции pop, а не лезть сразу по указателю front->right, т.к. список может быть пуст.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись
![]() |
![]() |
![]() |
![]() |
#5 |
Регистрация: 08.04.2023
Сообщений: 6
|
![]()
У меня еще иногда высвечивается исключение в строке
Код:
min->right было nullptr." |
![]() |
![]() |
![]() |
#6 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,124
|
![]()
Почему-то пролетаете мимо максимума до конца списка. Как выставляете 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 |