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값을 역참조하고 있다는데 이게 무슨 말인지도 모르겠어요.
부디 능력자님들 도와주세요 ㅠㅠ
혹시 몰라서 칼라 스크립터도 남깁니다
<div class="colorscripter-code" xss=removed><table class="colorscripter-code-table" xss=removed cellspacing="0" cellpadding="0"><tr><td xss=removed><div style
헉 이게 아니네
http://colorscripter.com/s/qD2gaRV
데이터셋 초기화 해줌? - dc App
데이터셋 초기화가 뭔지는 모르겠는데, main 처음부분에 initialize함수로 list초기화 했어요... 이게 말씀하신 데이터셋 초기화 맞나요?
풀코드 올려보샘;
http://colorscripter.com/s/8zWGKxc
이게 main함수 소스코드입니다..!
메인함수는 어차피 외부니까 큰 의미업구; 그 vs 에러메시지 머라고나옴; 복붙해보샘;
-1073741819 코드로 인해 종료되었습니다.
경고 C28182 NULL 포인터를 역참조하고 있습니다. 'ptr'에 'cmp'과(와) 동일한 NULL 값이 포함되어 있습니다.
위에 코드가 프로그램 실행했을 때 에러메시지고, 밑에 것이 visualstudio가 경고하는 거에요
그 모든 코드를 그냥 하나의 파일로 ctrl c v해서 컬러스크립터 올려보셈 의심은 되는데 확정을 못하겠음
네 알겠습니다 잠시만요
http://colorscripter.com/s/rKRZx2D
Purge 함수가 문제되는 함수고, Purge2 는 책에 나온 답안입니다.
이거 헤더 위에다가 #pragma warning(disable:4996) 하면 돌아감
선생님ㅠㅠ 감사합니다 지금은 급한일로 밖에 나와서 실험은 못해보지만 들어가서 해볼게요! 정말 감사합니다 좋은 하루 되세요...!
이거 while(ptr->next != NULL) 이걸 ptr != NULL로 바꿔주면 c28182에러 지워짐
선생님 집에 와서 말씀해주신대로 해보니까 되네요! 긴 시간동안 답해주셔서 정말 감사해요!!