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