我遇到了分段错误,但是我不知道为什么,因为指针不为null。我已经测试了我的代码,它似乎只为非空的情况给出了错误。我正在尝试删除最后一个节点并获取其值。我收到此消息: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;
}
这是我的双链表的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;
}