박하의 나날

[자료구조]04.연결리스트_2

프로그래밍/간단메모

01.

SetSortRule 함수: 정렬기준이 되는 함수를 등록

comp: SetSortRule함수를 통해 전달된 함수정보 저장을 위한 linkedlist의 멤버

SInsert 함수: comp에 등록된 정렬기준을 근거로 데이터를 저장한다.

= SetSortRule함수가 호출되면서 정렬의 기준이 리스트의 멤버 comp에 등록되면,

SInsert함수 내에서는 comp에 등록된 정렬의 기준을 근거로 데이터를

정렬하여 저장한다.

 

 

 

 

 

02.

SInsert: 중간에 노드를 삽입

 

 

1
2
3
4
5
void SInsert(List *plist, LData data){
    Node *newnode = (Node*)malloc(sizeof(Node));
    Node *pred = plist->head;
    newnode->data = data;    
 
cs

 

 

 

 

 

5
6
7
8
    while(pred->next !=NULL && plist->comp(data, pred->next->data !=0){
        pred = pred->next;
    }
    
cs

 

5~7 : 새 노드가 들어갈 위치를 찾기 위한 반복문

5: 새 데이터와 pred의 다음 노드에 저장된 데이터의 우선순위 비교를 위한 함수호출

comp:정렬기준이라고 정의된 함수를 호출,

data: 첫번째 인자로 받는 data전달.

 

comp가 0을 반환 : 첫번째 인자인 data가 정렬순서상 앞서기 때문에 head에 가까워야 하는 경우

comp가 1을 반환 : 두번째 인자인 pred->next->data가 정렬 순서상 앞서서 head에 더 가까워야 하는 경우

 

6: 다음 노드로 이동

 

 

 

 

 

6
7
8
9
10
    newnode->next = pred->next;
    pred->next = newnode;
    (plist->numOfData)++;
}
cs

 

 

 

 

03.

정렬의 기준을 설정하기 위한 함수의 정의

 

두개의 인자를 전달받도록 함수를 정의한다.

첫번째 인자의 정렬 우선순위가 높으면 0을, 그렇지 않으면 1을 반환한다.