아하
  • 토픽

  • 스파링

  • 잉크

  • 미션


깨끗한여치76

깨끗한여치76

C언어 연결리스트 오름차 순 정렬

line(getlist* gl) { // 오름차순 정렬

getlist* pre;

pre = (getlist*)malloc(sizeof(getlist));

pre->year = 0;

if (gl->next == NULL) {

return;

}

else {

if (gl == NULL) {

printf("노드가 없습니다");

}

else {

while (gl->next != NULL) {

if (gl->year > gl->next->year || (gl->year == gl->next->year && gl->day > gl->next->day)) {

if (gl->next != NULL) {

pre->year = gl->year;

pre->day = gl->day;

pre->getsum = gl->getsum;

strcpy(pre->data, gl->data);

gl->year = gl->next->year;

gl->day = gl->next->day;

gl->getsum = gl->next->getsum;

strcpy(gl->data, gl->next->data);

gl->next->year = pre->year;

gl->next->day = pre->day;

gl->next->getsum = pre->getsum;

strcpy(gl->next->data, pre->data);

gl = gl->next;

}

else {

pre->year = gl->year;

pre->day = gl->day;

pre->getsum = gl->getsum;

strcpy(pre->data, gl->data);

gl->year = gl->next->year;

gl->day = gl->next->day;

gl->getsum = gl->next->getsum;

strcpy(gl->data, gl->next->data);

gl->next->year = pre->year;

gl->next->day = pre->day;

gl->next->getsum = pre->getsum;

strcpy(gl->next->data, pre->data);

break;

}

}

if (gl->next != NULL) {

gl = gl->next;

}

else {

break;

}

}

}

}

return gl;

}

현재 노드와 다음 노드의 날짜 데이터를 이용해서 만약 현재노드가 다음노드가 날짜가 뒤면 서로 바꿔버리는 함수를 작성했는데 결과는 예를 들어 9월 4일,7월4일,8월 4일 순으로 차례대로 노드가 등록이 되어 있다고 하면 7월 4일,9월 4일,8월 4일로 마지막 노드까지 정리가 안됩니다.. 왜 그런걸까여

    아직 답변이 없어요.