在链表中,使用双指针或仅全局声明头指针是更好的编程实践

//这里头双指针作为参数传递

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/

10-12 15:33