c-当只将指针传递到链表的第一个元素时,是否需要一个临时变量



我有以下函数在链表的末尾附加一个双值。

void deappendlinked(dNODE *head,double value){
while(head!=NULL){
if(head->next==NULL){
break;
}
head=head->next;
}
dNODE *newElement=memalloc(sizeof(dNODE));
newElement->data=value;
newElement->next=NULL;
head->next=newElement;
}

它接收头,即链表的第一个元素的地址,我通过它迭代到最后。

由于我不是在传递指针的指针,所以我不需要一个临时变量来保存头的值,对吗?(也就是说,我可以做我做过的事情——至少它有效。(

由于我不传递指针的指针,所以我不需要临时变量来保存头的值,对吗

这是正确的。函数将接收调用模块传递的指针的副本。在该模块中,该指针的值将不会被您的函数更改(即,它将保持指向列表的顶部(。

顺便说一句,即使知道你传递的head值不会(读作:应该不是(是NULL,最好还是添加一个检查,以防你代码的未来编辑器做了一些愚蠢的事情。

此外,您的while循环可以大大简化:

void deappendlinked(dNODE *head,double value) {
if (head == NULL) {
// Optional error message?
return;
}
while (head->next != NULL) head = head->next;
dNODE *newElement=memalloc(sizeof(dNODE));
newElement->data=value;
newElement->next=NULL;
head->next=newElement;
}

相关内容

  • 没有找到相关文章

最新更新