鱼C论坛

 找回密码
 立即注册
查看: 700|回复: 3

[已解决]关于链表的一些问题

[复制链接]
发表于 2020-12-19 11:43:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
void print(struct node *first){
    struct node *newnode;
    newnode = first;
        while(newnode!=NULL)
        {
                printf("%d",newnode->data);
                newnode=newnode->next;
        }
}
我想问一下,在该函数中为什么要在其中又定义一个newnode节点呢,直接用first头节点遍历不行吗?不是特别理解
void print(struct node *first){
        while(first!=NULL)
        {
                printf("%d",first->data);
                first=first->next;
        }
}
不明白这样做的意义在哪?
最佳答案
2020-12-19 14:43:05
链表的操作一般不直接操作头指针,因为链表的操作都是从头指针开始的,万一操作不当移动了头指针,后续就找不到链表的入口了。所以一般都是用个辅助指针来操作,并不是多余的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-19 12:27:16 | 显示全部楼层
     完全可以,newnode  的定义纯属多余,大概是怕在函数中修改了 first 指针吧。其实,在函数内,能修改的是 first 所指向内存中的内容,并不能修改 first 变量本身。当然我这里所说的修改,其实是特指对函数外部的影响。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-19 14:43:05 | 显示全部楼层    本楼为最佳答案   
链表的操作一般不直接操作头指针,因为链表的操作都是从头指针开始的,万一操作不当移动了头指针,后续就找不到链表的入口了。所以一般都是用个辅助指针来操作,并不是多余的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-20 10:12:53 | 显示全部楼层
chxchxkkk 发表于 2020-12-19 14:43
链表的操作一般不直接操作头指针,因为链表的操作都是从头指针开始的,万一操作不当移动了头指针,后续就找 ...

明白了,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 09:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表