我正在尝试将节点添加到单链列表的末尾,但出现分段错误(核心转储错误)
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/