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
/**
*/
int addFront(struct _void_node** lp, void* dats, char v_size){
 
    int n = 0;
    struct _void_node* tmplp = NULL;
    printf("lp Test : %d\n"*lp);
 
    tmplp = (struct _void_node*)malloc(sizeof(struct _void_node));
 
    if(tmplp == NULL){
        return 1;
    }
 
    tmplp->v_size = v_size;
 
    tmplp->dats = NULL;
 
    tmplp->dats = malloc(sizeof(v_size));
 
    if(tmplp->dats == NULL){
        return 1;
    }
 
    for(n = 0; n < v_size; n++){
        *(char*)(tmplp->dats+n) = *(char*)(dats+n);
    }
 
    tmplp->next = *lp;
    *lp = tmplp;
 
    printf("%d\n",*lp);
 
    return 0;
}
 
cs

방법은 다음과 같다.

tmplp을 만들어서 해당 tmplp가 NULL로 초기화하여, malloc에서 문제가 있는지 확인 한다.

만약, NULL일 경우에는 닶이 없게 되므로 오류처리하게 만든다.(return 1을 반환한다.)


이상없이 생성되면, dats을 NULL로 변환한 후에 malloc을 시킨다.(어짜피 tmplp는 새로 형성되는 형태이기 때문에 문제가 없다고 생각한다.)


처리가 끝나면, void형을 char형으로 형변환하여 입력하게 한다.

이것은 1byte씩 넣기 때문에 문제가 없다.

좀 더 빨리 처리하기 원하면, v_size에 따라서 1byte, 2byte, 4byte, 8byte로 형변환하여 처리하는 방법이 있다.


tmplp의 다음은 lp와 동일하기 때문에,

tmplp -> next = *lp;을 이용하여 링크를 걸어준다.

Front에 연결하기 때문에 *lp가 결국 tmplp가 되므로

tmplp->next = *lp;

*lp = tmplp;

이렇게 된다. 이상 없는지 확인 한 후에 return 0으로 처리 완료되도록 한다.


이렇게 하면, Linked_List로 추가 되는 형태가 된다.

Posted by JunkMam
,