고수님들 급한대 답변좀 부탁드립니다
차오름
연결리스트 주소록인데요
에러가 떠서 해결방법은 찾앗는데 그 이유를 모르겠습니다
질문 내용 :
일단 연결리스트 주소록인데
생성학번을 1로 하고 삽입 학번을 2로 하면 에러가 나서 꺼져버리더라구요
삽입을 더 큰수로 하면 꺼져버리는데
일단 이게 오류나는 삽입 코드입니다
void insert_node(){
struct addr_list *list, *pre_list, *cur;
list=(struct addr_list *) malloc(sizeof(struct addr_list));
if (list==NULL){
printf(memory overflow\n);
exit(0);
}
printf(\n학번을 입력하시오:);
gets(list-st_no);
printf(이름을 입력하시오:);
gets(list-name);
printf(주민번호를 입력하시오:);
gets(list-id_no);
printf(주소를 입력하시오:);
gets(list-addr);
printf(휴대폰 번호를 입력하시오:);
gets(list-hp);
printf(집 전화번호를 입력하시오:);
gets(list-home_ph);
list-next = NULL;
if (head == NULL){
head = list;
list-next=NULL;
printf(0000);
}
else{
if (strcmp (head-st_no, list-st_no) = 0){
list-next = head;
head = list;
}
else{
pre_list = head;
while(1){
cur = pre_list-next;
if (strcmp (cur-st_no, list-st_no) = 0){
list-next = cur;
pre_list-next = list;
break;
}
else if (strcmp (cur-st_no, list-st_no) == 0){
printf(Same data duplicated);
exit(0);
}
else if (cur-next == NULL){
cur-next = list;
list-next = NULL;
break;
}
pre_list = cur;
}
}
}
printf(************ 학번 %s 삽입되었습니다.\n, list-st_no);
}
그런데 오류 해결한건 저 while 코드 아래에
while(1){
cur = pre_list-next;
if(cur==NULL){
pre_list-next=list; 이부분
list-next=NULL; 이부분
break;
}
if (strcmp (cur-st_no, list-st_no) 0){
list-next = cur;
pre_list-next = list;
break;
}
저 부분들을 넣었더니 오류가 없어졌습니다. 오류가 나는 이유하고 저 코드를 넣으면 왜 오류가 없어지는지
설명좀 해주실분 부탁드립니다.
리스트가 잘못된건지 아니면 쓰레기값 때문에 오류가 났던건지 궁금합니다