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

0 に答える 0