ListResult listInsertFirst(List list, ListElement element) {
NULL_ARG(list, LIST_NULL_ARGUMENT);
Node first = elementCopy(list, element);
NULL_ARG(first, LIST_OUT_OF_MEMORY);
if(!list->size){
list->iterator = first;
list->last = first;
}
first->next = list->first;
list->first = first;
list->size++;
return LIST_SUCCESS;
}
这是我的列表插入代码,但是当我在Eclipse Indigo中运行它时,它会给我一个错误“段错误”。我试图删除这一行:
list->first = first;
并没有给我错误。
函数elementCopy
完美运行:使用数据元素创建新节点,并将下一个设置为NULL
。
Node elementCopy(List list, ListElement e){
Node tmp = malloc(sizeof(*tmp));
NULL_ARG(tmp, NULL);
tmp->data = list->copyElement(e);
NULL_ARG(tmp->data, NULL);
tmp->next = NULL;
return tmp;
}