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을 반환한다.
'프로그래밍 > 간단메모' 카테고리의 다른 글
[자료구조]배열,구조체,포인터_오답 (0) | 2017.03.03 |
---|---|
[자료구조]순환_오답 (0) | 2017.03.01 |
[자료구조]04.연결리스트(Linked List) (0) | 2017.02.09 |
[자료구조] 배열을 이용한 리스트구현 (0) | 2017.02.02 |
[자료구조]재귀함수 (0) | 2017.01.18 |