```c
//链表的插入:按照学号的顺序插入
void link_insert_num(STU **p_head,STU *p_new)
{
STU *pb,*pf;
pb=pf=*p_head;
if(*p_head ==NULL)// 链表为空链表
{
*p_head = p_new;
p_new->next=NULL;
return ;
}
while((p_new->num >= pb->num) && (pb->next !=NULL) )
{
pf=pb;
pb=pb->next;
}
if(p_new->num < pb->num)//找到一个节点的num比新来的节点num大,插在pb的前面
{
if(pb== *p_head)//找到的节点是头节点,插在最前面
{
p_new->next= *p_head;
*p_head =p_new;
}
else
{
pf->next=p_new;
p_new->next = pb;
}
}
else//没有找到pb的num比p_new->num大的节点,插在最后
{
pb->next =p_new;
p_new->next =NULL;
}
}
从这里开始是我的疑问:
`` if(pb== *p_head)//找到的节点是头节点,插在最前面
{
p_new->next= *p_head;
*p_head =p_new;
}这是我这段代码中不懂的地方,如果把p_new赋给*p_head,那么p_new->next不就指向自己了吗?我不知道我的逻辑哪里有问题,感谢帮我指出来,我真的想了好久想不明白。`
链表有关疑问,可以帮我看一看吗,很久都没有想出来
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
关注 【以下回答由 GPT 生成】
//链表的插入:按照学号的顺序插入 void link_insert_num(STU **p_head, STU *p_new) { STU *pb, *pf; pb = pf = *p_head; if (*p_head == NULL) { // 链表为空链表 *p_head = p_new; p_new->next = NULL; return; } while((p_new->num >= pb->num) && (pb->next != NULL)) { pf = pb; pb = pb->next; } if(p_new->num < pb->num) { if(pb == *p_head) { p_new->next = *p_head; // 这里赋值的是链表的头节点,不是 p_new 自己 *p_head = p_new; // 将 p_new 设为链表的头节点 } else { pf->next = p_new; // 修改前一个节点的指针 p_new->next = pb; // 修改新节点的指针 } } else { pb->next = p_new; // 将新节点插在链表末尾 p_new->next = NULL; } }
在这段代码中,
p_new->next = *p_head
不是让 p_new 指向自己,而是将 p_new 的 next 指针指向链表的头节点,然后将 p_new 设为链表的头节点。这里还需要对前一个节点的指针和新节点的指针进行修改,以保证链表的连接是正确的。希望以上解释能够帮助你理解这段代码。【相关推荐】
- 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7442490
- 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:输入一个整数,将各位数字反转后输出
- 您还可以看一下 七月在线老师的人工智能极简入门课程中的 机械思维:从人工智能发展史中,我们能获得什么启示?小节, 巩固相关知识点
- 除此之外, 这篇博客: 这些结构体常见知识你都了解了吗?中的 结构体变量的嵌套定义 部分也许能够解决你的问题。
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^解决 无用评论 打赏 举报
悬赏问题
- ¥15 有人会用py或者r画这种图吗
- ¥15 MOD04_3K图像预处理
- ¥15 [VASP]关于超胞大小和k 点网格的收敛性测试
- ¥15 pip下载paddle2onnx离谱错误
- ¥60 db2move nlzxams import 导出db2备份数据报错
- ¥15 关于#python#的问题:全文总结功能咨询
- ¥15 俄罗斯方块中无法同时消除多个满行
- ¥15 使用gojs3.0,如何在nodeDataArray设置好text的位置,再go.TextBlock alignment中进行相应的改变
- ¥15 psfusion图像融合指标很低
- ¥15 银河麒麟linux系统如何修改/etc/hosts权限为777