遇见这种问题建议检查一下指针指向的结构体是否为空,下面结合我的问题说明一下
该函数用二级指针headnode(因为void函数不返回值,此时要改变头节点的地址需要使用二级指针进行修改)接受了头节点的地址
一级指针p_new接受了新节点的地址(新节点地址不需要保存修改值返回函数体外,因此一级指针接受地址对节点的指针域进行操作即可)
源代码:
void link_insert(STU **headnode,STU *p_new){
STU *pb=*headnode,*pf;
if(*headnode==NULL){
*headnode=p_new;
return;
}
while ((p_new->num>pb->num)&&(pb!=NULL)) {
printf("laile\n");
pb=pb->next;
printf("laile\n");
}
printf("laile0\n");
执行结果:
可以看到,此次之行只执行了一遍while语句且没有跳出(打印了两遍"