void SortedInsert(struct node** headRef, struct node* newnode)
{
struct node* current= *headRef;
if(newnode->data<current->data)
{
newnode->next=current;
*headRef=newnode;
}
else
{
current=current->next;
while(current!=NULL)
{
if(newnode->data<current->next->data)
break;
current=current->next;
}
newnode->next=current->next;
current->next=newnode;
}
}
答案 0 :(得分:1)
考虑插入列表末尾的情况。然后你得到
// current = NULL
current->next = nextnode;
// is ((struct node*)NULL)->next = nextnode;
答案 1 :(得分:0)
上面的代码不足以指出错误。
但是,作为一般性建议,如果没有有效性(android:largeHeap="true"
)检查,则会有很多指针解除引用。在解除引用之前,请添加一个检查以查看指针是否有效,因为NULL
被认为是指针的无效值并尝试取消引用产生undefined behaviour的指针。这有时会导致分段错误。