int cmp_Member(const Member* x, const Member* y)
{
if ((x->no == y->no) && (strcmp(x->name,y->name)==0))
return 0;
return -1;
}
void Purge(List* list, int compare(const Member* x, const Member* y))
{
NODE* ptr;
NODE* cmp;
NODE* pre;
if (list->head != NULL) {
if (list->head->next == NULL)
printf("노드가 한개 뿐입니다.");
else {
ptr = list->head;
while (ptr->next != NULL) {
cmp = ptr->next;
pre = ptr;
while (cmp != NULL) {
if (compare(&ptr->data, &cmp->data) == 0) {
pre->next = cmp->next;
free(cmp);
cmp = pre->next;
}
else {
pre = cmp;
cmp = cmp->next;
}
}
ptr = ptr->next;
}
list->crnt = list->head;
printf("중복되는 노드를 삭제했습니다. head 노드를 가리킵니다.");
}
}
}




코딩 배운지 얼마 안된 코딩 초짜입니다

연결리스트 연습문제에서, 서로 같은 값을 가진 노드를, 맨 앞의 노드를 제외하고 모두 삭제하는 함수를 만들라고 해서 저렇게 만들었는데

오류가 발생하네요.

NODE는 Member data, NODE * next로 구성돼 있고, Member는 int no, char name[20]으로 구성돼있습니다.

몇 번을 봐도 왜 오류가 발생한 건지 모르겠습니다. visualstudio는 NULL값을 역참조하고 있다는데 이게 무슨 말인지도 모르겠어요.

부디 능력자님들 도와주세요 ㅠㅠ