lovemt 发表于 2020-12-19 11:43:53

关于链表的一些问题

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;
        }
}
不明白这样做的意义在哪?

jackz007 发表于 2020-12-19 12:27:16

   完全可以,newnode的定义纯属多余,大概是怕在函数中修改了 first 指针吧。其实,在函数内,能修改的是 first 所指向内存中的内容,并不能修改 first 变量本身。当然我这里所说的修改,其实是特指对函数外部的影响。

chxchxkkk 发表于 2020-12-19 14:43:05

链表的操作一般不直接操作头指针,因为链表的操作都是从头指针开始的,万一操作不当移动了头指针,后续就找不到链表的入口了。所以一般都是用个辅助指针来操作,并不是多余的。

lovemt 发表于 2020-12-20 10:12:53

chxchxkkk 发表于 2020-12-19 14:43
链表的操作一般不直接操作头指针,因为链表的操作都是从头指针开始的,万一操作不当移动了头指针,后续就找 ...

明白了,谢谢
页: [1]
查看完整版本: 关于链表的一些问题