Я писал программу, которая работает со списками (я не мог использовать библиотеку «списков», которая была точкой задачи). Один из методов добавляет элемент в список и помещает его в нужное место, так называемую «сортированную вставку». Я пытался написать этот метод, помогая себе с этим источником: https://www.geeksforgeeks.org/given-a-linked-list-which-is-sorted-how-will-you-insert-in-sorted-way/, но, к сожалению, я сделал что-то не так,Большую часть времени программа запускается без проблем, компилятор не видит никаких ошибок, но в одном из нескольких запусков она просто зависает в этом конкретном методе, и я действительно не знаю, почему, просто так: Сама программа продолжается, нокажется, он ничего не делает, просто останавливается
в этой строке или ниже: Что показывает визуальная студия, когда я приостанавливаю программу
Я неЯ знаю, почему он зависает, я думал, что указал все возможные случаи в этом методе, но, кажется, я не сделал. Сам метод выглядит следующим образом:
void AddManyElements(int amount) //adding many elements with random key value
{
for (int i = 0; i < amount; i++)
{
node* temp1,* temp2;
node** temp3;
temp3 = &head;
temp1 = new node;
temp1->key = ( 4 *rand()) % 99901 + 99;
temp1->d_variable = rand();
temp1->ch_variable = 'T';
temp2 = head;
while (temp2 != NULL && temp2->key <= temp1->key)
{
if (temp2->key == temp1->key) //keys must be unique, checking if they are different
{
temp1->key = (4 * rand()) % 99901 + 99;
temp2 = head;
}
else
{
temp3 = &temp2->next;
temp2 = temp2->next;
}
}
*temp3 = temp1;
temp1->next = temp2;
size++;
}
}
Если потребуется, я предоставлю ссылку на полную программу. Если что-то неясно в моем коде, я позже смогу добавить больше комментариев.