我正在为一个班级开展这个小项目,我遇到了这个问题。 我在这个例子上运行了ddd,当它退出while循环时,prev被设置为null,导致分段错误。
当我运行ddd时,我注意到temp不是null而且两个" prev是nulln"打印语句不会被绊倒,但是循环外的那个会发生。
你知道会发生什么吗?
while(temp)
{
printf("while loop.\n");
if(pe->y > temp->y)
{
printf("while - if reached.\n");
break;
}//end if statement
prev = temp;
if(prev == NULL)
printf("prev is null1\n");
temp = temp->next;
if(prev == NULL)
printf("prev is null2\n");
}//end while loop
if(prev == NULL)
printf("prev is null3\n");
prev->next = pe;//redit links so that node is added in.
pe->next = temp;
答案 0 :(得分:3)
如果在循环的第一次迭代中它成立:
if(pe->y > temp->y)
然后你永远不会初始化prev
。