我正在实现一个链表库来自学 C。除了迭代之外,我的大多数事情都运行良好,它被用于我制作的长度函数。这是用于列表的结构
typedef struct ListNode ListNode;
typedef struct List List;
struct ListNode {
void *val;
ListNode *next;
};
struct List {
ListNode *head;
};
我还有一些其他函数用于操作列表,即创建、推送和弹出函数。如果重要的话,这里是创建函数:
List *list_create(){
List *list = malloc(sizeof *list);
return list;
}
不过,这是有问题的功能:
int list_length(List *list){
ListNode *current = list->head;
int count = 0;
// Iterate through the list, adding to the count
while(current != NULL){
count++;
current = current->next;
}
return count;
}
由于某种原因,当它到达最后一次迭代时,while 谓词不起作用,相反,我收到以下错误:
Job 1, './linked_list ' terminated by signal SIGSEGV (Address boundary error)
有什么明显的事情表明我做错了吗?您可以在https://github.com/tposed/linked_list找到所有(不完全工作的)代码