본문 바로가기

공부

C 언어 - linked list search 예제

 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);
    }


 다시 한 번 원하는 제목이 맞는지 확인!!