Метод зацикливается сам, и я не знаю почему - PullRequest
0 голосов
/ 16 октября 2019

Я писал программу, которая работает со списками (я не мог использовать библиотеку «списков», которая была точкой задачи). Один из методов добавляет элемент в список и помещает его в нужное место, так называемую «сортированную вставку». Я пытался написать этот метод, помогая себе с этим источником: 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++;
    }
}

Если потребуется, я предоставлю ссылку на полную программу. Если что-то неясно в моем коде, я позже смогу добавить больше комментариев.

...