У меня есть функция, которая считывает данные из файла, а затем вставляет в порядке возрастания на основе определенного поля из каждой строки данных.Сортированный связанный список, вставляющий дубликаты при каждом выполнении
Если я компилирую и запускаю этот раздел кода, он сортируется изначально, но как только я повторяю действие, я получаю отсортированный дубликат, если я запускаю еще один раз, каждый элемент появляется 3 раза.
Как я могу заставить этот код останавливать вставку дубликатов?
void sortData(Node *& head, Node * data)
{
ifstream fin("data.txt");
int acc; string fname, lname; double bal;
while (fin >> acc >> fname >> lname >> bal)
{
data = new Node;
data->account = acc;
data->fname = fname;
data->lname = lname;
data->balance = bal;
data->next = NULL;
if (head == NULL)
{
head = data;
}
else if (data->balance <= head->balance)
{
data->next = head;
head = data;
}
else
{
Node * temp1 = head;
Node * temp2 = temp1->next;
while (temp2 != NULL && data->balance > temp2 ->balance)
{
temp1 = temp2 ;
temp2 = temp2 ->next;
}
data->next = t2;
temp1 ->next = data;
}
}
Node * temp = head;
while (temp != NULL)
{
cout << temp->account << " " << temp->fname << " " << temp->lname << " " << temp->balance << "\n";
temp = temp->next;
}
fin.close();
}
Ясность.
Программа работает с простым МЕНЮ, поэтому, когда я создаю и запускаю в первый раз, я могу сделать несколько вещей, вставить новую запись, удалить, показать все записи (где проблема), а затем выйти. Я могу повторять каждое действие столько раз, сколько возможно, ожидать Exit (очевидно).
Initial Run, а затем показать все записи в соответствии с номером счета:
1111 FName1 LName1 400,56
2222 FName2 LName2 23,45
3333 FName3 LName3 4599,91
4444 FName4 LName4 1000,5
Хорошо работает.
Но
Когда я хочу, чтобы показать все записи еще раз, я вижу это
1111 FName1 LName1 400,56
1111 FName1 LName1 400,56
2222 FName2 LName2 23,45
2222 FName2 LName2 23.45
3333 FName3 LName3 4599,91
3333 FName3 LName3 4599,91
4444 FName4 LName4 1000,5
4444 FName4 LName4 1000,5
Я не вставив в файл, просто распечатав данные в порядке возрастания.
Пожалуйста, ваши основные. Я думаю, вы вызываете sortData n раз, и поэтому вы читаете данные из файла n раз, поэтому у вас будет n копий после n вызовов. Однако мне нужно, чтобы ваш главный подтвердил это. – midor
Заметка без форматирования кода, здесь, на SO. 4 пробела используется для обозначения «это код». Итак, представьте себе, что 4 пробела исчезают из каждой строки, на конечном выходе. –
@viktoriaAnderson вы хотите помочь? – hello