在链表中,使用双指针或仅全局声明头指针是更好的编程实践
//这里头双指针作为参数传递
Void insertatend(node **head, int item)
{
node *ptr, *loc;
ptr=(node*)malloc(sizeof(node));
ptr->info=item;
ptr->next=NULL;
if(*head==NULL)
*head=ptr;
else
{
loc=*head;
while (loc->next!=NULL)
{
loc=loc->next;
loc->next=ptr;
}
}
}
或这个
//这里我已经声明了header指针为global
void insert(int x)
{
node *ptr,*ptr1;
ptr=(node*)malloc(sizeof(node));
ptr->info=x;
if(head==NULL)
{
ptr->next=head;
head=ptr;
}
else
{
ptr1=head;
while(ptr1->next!=NULL)
{
ptr1=ptr1->next;
}
ptr1->next=ptr;
ptr->next=NULL;
}
}
最佳答案
我不会说:
void insertatend(node *head, int item)
{
node *ptr, *loc;
ptr=(node*)malloc(sizeof(node));
ptr->info=item;
ptr->next=NULL;
if(head==NULL)
head=ptr;
else
{
loc=head;
while (loc->next!=NULL)
{
loc=loc->next;
loc->next=ptr;
}
}
}
我不知道您为什么要在函数内部更改指向头指针的地址,因此没有理由将其作为指针传递。
通常,良好的编程习惯将始终不鼓励全局变量,如您在以下示例中看到的:
Are global variables bad?
Why are global variables evil?
When is it ok to use a global variable in C?
关于c - 链表中更好的编程实践,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29350420/