본문 바로가기
카테고리 없음

힙기반 순차 insert data함수

by Hyper하이퍼 2022. 12. 30.
반응형

<아이디어>

1. 무한히 Link를 탐색하면서 next값이 0인 곳에 이어 붙인다.

2. prev = 초기 배열의 주소로 초기화한다.

3. n = prev->next 로 초기화한다. 

 

기존 배열 방식의 data 정렬의 장점은 탐색이 빠른 것이다. 하지만 많은 양의 data를 추가하거나 삭제할 경우 모든 data를 이동해야하기 때문에 느린 것이 단점이다.

 

탐색 속도는 배열기반에 비해 느리지만, 주소값을 활용하여 data의 이동이 아닌, 주소값의 변화를 추적하여 data끼리 연결하는 것을 Link 방식이라고한다. 

 

그리고 그런 Link 방식을 Heap 메모리에서 하면 무한히 data를 연결할 수 있기 때문에 Heap 메모리에서 진행한다.

반응형
int Insert_Data(SCORE * d)
{
	SCORE *p;
	SCORE *n;
	SCORE *prev;
	int r;

	r = Get_Hash_Key(d->id);

	prev = &Hash_table[r];
	n = prev->next;

	for (;;)
	{
		if (n == (SCORE *)0x0)
		{
			p = calloc(1, sizeof(SCORE));
			if (p == (void *)0x0) return -1;
			*p = *d;

			
			prev->next = p;
			p->next = (void *)0;
			return 1;
		}

		if (d->id == n->id) return -2;

		prev = n;
		n = n->next;
	}

}
반응형