我正在尝试将节点添加到单链列表的末尾,但出现分段错误(核心转储错误)

void slist_add_back(struct slist *l, char *str) {
    struct snode *temp;

    do {
        l->front = l->front->next;
        l->counter++;
    } while (l->front !=NULL);

    l->counter++;
    temp = (struct snode *)malloc(sizeof(struct snode));
    l->back = l->front;
    l->back->next = temp;
    l->back = temp;
}

最佳答案

当你写:

do{
      l->front = l->front->next;
      l->counter++;

   }while(l->front !=NULL);


最后,l->front为空。现在l->back = l->front;暗示l->back也为空。因此,此分配是错误的:

l->back->next = temp; // causing segfault

关于c - 将节点添加到单链列表的末尾,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21420665/

10-11 18:41