void pop(start) struct node *start; { if(start == NULL) { printf("The list is empty!\n"); return; } struct node *temp = start; start = temp->next; temp->next = start->prev = NULL; free(temp); return; # or maybe we can return the element popped before freeing temp or whatever. }