Ошибка сегментации для функции при реализации двусвязного списка в C - PullRequest
0 голосов
/ 01 апреля 2020

Я получаю ошибку сегментации, но я не знаю почему, так как указатель не является нулевым. Я проверил свой код, и он, кажется, только дает ошибку для непустого случая. Я пытаюсь удалить последний узел и получить его значение. Я получаю это сообщение: Error: Memory error occurred! Type of error: segmentation-fault

struct node {
    int item;
    struct node *prev;
    struct node *next;
};

struct dl {
    struct node *front;
    struct node *back;
};

 int dl_remove_back(struct dl *dq) {
     int temp = dq->back->item;
     struct node *tempLink = dq->back->prev;

     if (dq->front->next == NULL) {
         dq->front = NULL;
     } else {
         dq->back->prev->next = NULL; //error
     }
     deq->back = tempLink;
     return temp;
}

1 Ответ

0 голосов
/ 01 апреля 2020

Это моя функция remove_back для двойного списка:

int dl_remove_back(struct dl * f) {

    if(f == NULL) {
        fprintf(stderr, "%s: invalid argument (NULL DL pointer)\n", __func__);
        exit(EXIT_FAILURE);
    }

    struct node * temp = f->back;
    if(temp == NULL) {
        return NULL;
    }

    int item = temp->item;
    f->back = f->back->prev;
    if(f->back == NULL) {
        f->front = NULL;
    } else {
        f->back->next = NULL;
    }
    free(temp);

    return item;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...