공부
C 언어 - linked list search 예제
Swimming_Kim
2019. 2. 4. 16:56
search 알고리즘이 아님.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | void search_song(char* artist, char *title) { Artist *prt_artist = find_artist(artist); if (prt_artist == NULL) { printf("No such artist exists\n"); return; } SNode *ptr_snode = prt_artist->head; while (ptr_snode != NULL && strcmp(ptr_snode->song->title, title) < 0) ptr_snode = ptr_snode->next; // ptr_snode->next if (ptr_snode != NULL && strcmp(ptr_snode->song->title, title) == 0) { printf("Found:\n"); print_song(ptr_snode->song); } else { printf("No such song exists\n"); return; } } | cs |
알파벳 순으로 정렬되어 있다는 가정 하에 최적화를 해 주는 예외처리이다.
while (ptr_snode != NULL && strcmp(ptr_snode->song->title, title) < 0)
알파벳 순이니까 원하는 제목보다 작은 동안에만 순회한다.
if (ptr_snode != NULL && strcmp(ptr_snode->song->title, title) == 0) {
printf("Found:\n");
print_song(ptr_snode->song);
}
다시 한 번 원하는 제목이 맞는지 확인!!