附加到c中的列表

时间:2014-09-16 19:19:20

标签: c list linked-list

在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
      }
}

调用(在main()中:

add(&head);

1 个答案:

答案 0 :(得分:4)

问题可能在于这行代码:

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

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

将其更改为

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

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