附加到c中的列表



在c中向列表追加的正确方法是什么?我到处找,每次我自己尝试都失败了。

typedef struct node
{
    char* groupName;
    int groupSize;
    boolean status;
    struct node* next;
} node;
void add(struct node * *head)
{
    struct node* temp=(struct node *)malloc(sizeof(node));
    temp->groupName=name;
    temp->groupSize=size;
      if ((*head) == NULL) {
          (*head) = temp;
          (*head)->next = NULL;
      } else {
            struct node* ptr = (*head);  //dont change head pointer, so make variable to keep track
            while (ptr != NULL) ptr= ptr->next; //go until the end of the list
            (ptr->next) = temp; //add this new data to the end of the list
            temp->next = NULL; //null becomes end of list
      }
}

call(in main():

add(&head);

问题可能在于这行代码:

   while(ptr!=NULL) ptr= ptr->next; //go until the end of the list

您可以更改ptr,直到它等于NULL,这肯定不是您想要的,因为您在循环之后立即取消引用ptr

将其更改为

   while(ptr->next != NULL) ptr = ptr->next;

看看这是否有效。请记住:您对还没有下一个节点的节点感兴趣(因此可以插入它)。

相关内容

  • 没有找到相关文章

最新更新