05-05 10:07
Recent Posts
Recent Comments
관리 메뉴

너와나의 관심사

linked list (insert, remove) 코딩 Tip 정리 본문

coding Algorithm

linked list (insert, remove) 코딩 Tip 정리

벤치마킹 2020. 8. 11. 10:08

코딩 Tip 

구조체를 한나 선언 하고 

Head 를 포함하는 List 구조체를 다시 선언해야 insert , remove 하는데 어려움이 없다 

초기화 이유로 Head 부분은 NULL 로 초기화를 해주고 각각 Head -> next 가 NULL 일때는 바로 Next 를 대입해주는 방식으로 코딩 



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
43
 
 
struct Node {
 
    int data;
    Node *next;
 
};
 
 
Node * myalloc2(int data) {
 
    arr2[ncnt2].data = data;
    arr2[ncnt2].next = NULL;
 
    return &arr2[ncnt2++];
}
 
 
struct NodeList {
 
    Node *Head;
    int listNum;
 
    NodeList() {
        Head = myalloc2(max_num);
        listNum = 0;
    }
 
};
 
void init() {
 
    ncnt = 0;
    ncnt2 = 0;
 
 
    for (register int i = 0; i <= MAX_LIST; i++) {
 
        nodeList[i].listNum = 0;
        nodeList[i].Head->next = NULL;
    }
}
cs


착각했던 부분 : 

linked list 를 배열로 나눠서 각각을 count 했을때 해당 index  를 찾는 부분 

idx 를 배열의 list 갯수만큼 빼다가 나중에 indxe 값이 배열의 list 갯수 보다 크면 그때는 바로 

index 값과 remainder 값을 return 해주면 끝 !! 



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
 
 
int findIdx(int idx, int *r) {
 
    int i = 0;
    int val = 0;
    *r = 0;
 
    for (; i < MAX_NUM; i++) {
 
        if (nodeList[i].listNum == 0)
            continue;
 
        if (nodeList[i].listNum && idx >= nodeList[i].listNum) {
 
            idx -= nodeList[i].listNum;
        }
        else {
 
            *r = idx;
            return i;
        }
    }
 
    return i;
}
cs


'coding Algorithm' 카테고리의 다른 글

퀵소팅 알고리즘  (0) 2019.01.12
최소 편집 알고리즘  (0) 2018.07.28
BFS 보물섬 코드  (0) 2018.06.25
부분 배열의 합이 0에 가까운 값을 찾는 방법  (0) 2018.03.13
코딩시험 실수담  (1) 2018.03.11
Comments