Проблема: У меня есть .txt-файл, содержащий несколько номеров, и мне нужно поместить эти цифры в порядок, а также удалить любые дубликаты. Я сделал функцию для их упорядочения (она работает). и в настоящее время я работаю над процессом удаления.C++, как перенести связанный список при удалении дубликатов
Я не уверен, как сделать так, чтобы он пробежал весь список. Потому что, если первые два числа равны 0, он удаляет только первый, а затем завершает работу.
Во всяком случае, это то, что я до сих пор для моей функции удаления:
void deleteDuplicate(Node*& head) // head is the list with the ordered numbers
{
Node* tmpPtr;
Node* delPtr;
if (head == nullptr){
return;
}else if (head->data == head->next->data){
delPtr = head;
head = head->next;
delete delPtr;
}else{
tmpPtr = head;
delPtr = head->next;
while (delPtr != nullptr && delPtr->data != delPtr->next->data){
delPtr = delPtr->next;
tmpPtr = tmpPtr->next;
}
if (delPtr != nullptr){
tmpPtr->next = delPtr->next;
head = head->next;
delete delPtr;
}
}
}
Правильный инструмент для решения таких проблем является ваш отладчик. Перед тем, как просить о переполнении стека, вы должны пропустить свой код по очереди *. Для получения дополнительной информации, пожалуйста, прочтите [Как отлаживать небольшие программы (Эрик Липперт)] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/).Как минимум, вы должны \ [изменить] ваш вопрос, чтобы включить пример [Минимальный, полный и проверенный] (http://stackoverflow.com/help/mcve), который воспроизводит вашу проблему, а также замечания, сделанные вами в отладчик. –
Вам разрешено просто не вставлять дубликаты? – user4581301
Рассматривая это с другой стороны, вы, вероятно, не хотите реализовывать функцию таким образом. Скорее всего, у вас есть функция удаления, которую вы уже тестировали и знаете, работает. Если вы не рассматриваете возможность создания и тестирования. Просто повторите один раз и вызовите уже существующую функцию удаления для каждого удаляемого узла. – user4581301