方法本身会循环,我不知道为什么

时间:2019-10-16 11:12:01

标签: list loops pointers linked-list nodes

我一直在写一个围绕列表运行的程序(我不能使用“列表”库,这是任务的重点)。其中一种方法将元素添加到列表中并将其放置在正确的位置,即所谓的“排序插入”。我试图编写此方法来帮助自己使用此源: https://www.geeksforgeeks.org/given-a-linked-list-which-is-sorted-how-will-you-insert-in-sorted-way/ 但不幸的是我做错了事。大多数时候程序运行没有问题,编译器看不到任何错误,但是在少数运行中,它只是冻结在这种特定方法中,我真的不知道为什么,就像这样: the program itself goes on but it doesnt seem to do anything, it just stops

在此行以下的

What visual studio shows when i pause the program

我不知道为什么会冻结,我想我已经指出了这种方法中所有可能的情况,但似乎没有。方法本身看起来像这样:

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++;
    }
}

如果需要,我将提供完整程序的链接。如果我的代码不清楚,我可以稍后添加更多注释。

0 个答案:

没有答案