728x90
정렬 삽입 SInsert
- LInsert 시에 정렬 기준이 등록되어 있다면 SInsert를 실행
void LInsert(List * plist, LData data)
{
if(plist->comp == NULL)
FInsert(plist, data);
else
SInsert(plist, data);
}
- 정렬 기준 comp 함수를 설정하기 위해서는 SetSortRule 함수를 실행하여 전달
void SetSortRule(List * plist, int (*comp)(LData d1, LData d2))
{
plist->comp = comp;
}
- SInsert
-> pred : 삽입하려는 노드의 위치를 찾기위해 다음 노드와의 비교를 위한 노드
-> 위치를 찾으면 pred와 pred->next 사이에 넣으면 됨
void SInsert(List * plist, LData data)
{
Node * newNode = (Node*)malloc(sizeof(Node));
Node * pred = plist->head;
newNode->data = data;
while(pred->next != NULL && plist->comp(data, pred->next->data) != 0)
{
pred = pred->next;
}
newNode->next = pred->next;
pred->next = newNode;
(plist->numOfData)++;
}
728x90
'Programming > Data Structure' 카테고리의 다른 글
열혈 자료구조 - 5-1. 원형 연결 리스트(2) (0) | 2020.12.19 |
---|---|
열혈 자료구조 - 5-1. 원형 연결 리스트(1) (0) | 2020.12.19 |
열혈 자료구조 - 4-2. 단순 연결 리스트의 ADT와 구현(2) (0) | 2020.12.06 |
열혈 자료구조 - 4-2. 단순 연결 리스트의 ADT와 구현(1) (0) | 2020.12.06 |
열혈 자료구조 - 4-1. 연결 리스트의 개념적인 이해 (0) | 2020.12.06 |