본문 바로가기
알고리즘(C언어)/이것이 자료구조+알고리즘이다(박상현)_자료구조

(10)[Chapter6]순차탐색_계수법(이론+코드)(작성중)

by 코잼민 2024. 7. 19.

하다가 힘들어서 정리하는건 미룰래 기록만 하자

##이론 :

##코드 :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
// 계수법(Count Heuristic)을 사용한 순차 검색 함수
Node* FCM(Node** head, int data) {
    Node* C = *head;
    Node* M = NULL;
    Node* prev = NULL;
 
    // 노드를 찾는 과정
    while (C != NULL) {
        if (C->data == data) { // 데이터를 찾았다면
            C->cnt++// 탐색 횟수 증가
            M = C; // 찾은 노드를 M에 저장
 
            // 노드를 리스트 내의 올바른 위치로 이동시키기 위해
            if (prev != NULL) {
                prev->next = C->next; // 이전 노드가 현재 노드를 건너뛰게 함
                Node* T = *head;
                Node* PT = NULL;
 
                // 현재 노드를 적절한 위치로 이동시키기 위해 올바른 위치 찾기
                while (T != NULL && T->cnt >= C->cnt) {
                    PT = T;
                    T = T->next;
                }
 
                // 찾은 위치로 노드를 이동시킴
                if (PT != NULL) {
                    C->next = PT->next;
                    PT->next = C;
                }
                else {
                    C->next = *head;
                    *head = C;
                }
            }
            return M; // 검색된 노드를 반환
        }
        prev = C;
        C = C->next;
    }
 
    return NULL// 데이터를 찾지 못했을 경우 NULL 반환
}
cs