我一直在写一个围绕列表运行的程序(我不能使用“列表”库,这是任务的重点)。其中一种方法将元素添加到列表中并将其放置在正确的位置,即所谓的“排序插入”。我试图编写此方法来帮助自己使用此源: 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++;
}
}
如果需要,我将提供完整程序的链接。如果我的代码不清楚,我可以稍后添加更多注释。