Здесь у меня есть функция удаления по позиции для двусвязных списков.Я пытаюсь сохранить указатель на последний узел, чтобы при печати в обратном направлении мне не приходилось выполнять итерацию до последнего узла.
node* deleteByPos(node* list, node** last, int position) {
int c = 0;
node* temp;
node* prev;
temp=list;
if (temp==NULL) {
printf("No nodes available to delete\n\n");
return list;
} else {
while(temp!=NULL && c != position) {
prev=temp;
temp=temp->next;
c++;
}
if (temp==NULL) {
printf("Reached end of list, position not available\n\n");
return list;
} else if (temp->next == NULL) {
prev->next=temp->next;
temp->next->prev = prev;
&last = temp->next;
free(temp);
return list;
} else {
prev->next=temp->next;
temp->next->prev = prev;
free(temp);
return list;
}
}
}
Когда я пытаюсь удалить последнюю позицию в списке,Я получаю ошибку сегментации.Как мне исправить?