Page 451 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 451
무결합(no linkage)
함수 안에서 정의한 변수 이름, 함수의 인수 이름, 라벨 이름 등은 그 함수 안에서만 유효하며 비록 같
은 소스 파일 안에서 작성했다고 하더라도 함수 외부에서는 접근할 수 없습니다. 이렇게 소스 프로그램
안에서만 사용하고 다른 소스에 존재를 알릴 필요가 없는 함수나 변수는 외부 결합을 하면 안 됩니다.
그림 11C-3을 다시 살펴보겠습니다. 소스 파일 B 안에서 선언한 변수 y에는 키워드 extern이 지정되
어 있습니다. 이렇게 키워드를 지정하면 ‘다른 소스 파일에서 정의한 변수를 사용합니다’라는 말과 같
은 의미입니다.
키워드 static과 extern은 메모리 클래스 지정자 가운데 하나입니다.
오픈 주소법
또 다른 해시법인 오픈 주소법(open addressing)은 충돌이 발생했을 때 재해시(rehashing)를 수
행하여 비어 있는 버킷을 찾아내는 방법으로, 닫힌 해시법(closed hashing)이라고도 합니다.
요소의 검색, 삽입, 삭제 과정을 그림 11-9에 나타낸 구체적인 예를 통해 살펴보겠습니다.
앞에서 소개했던 예와 마찬가지로 키 값을 13으로 나눈 나머지를 해시 값으로 합니다.
요소 삽입
a 는 새로운 값(18)을 삽입하고자 할 때 충돌이 발생한 경우입니다. 이럴 때 사용하는 방법이
재해시(rehashing)입니다. 재해시할 때 해시 함수는 자유롭게 결정할 수 있습니다. 여기서는
재해시할 때 키 값에 1을 더한 값을 13으로 나눈 나머지로 합니다.
0 1 2 3 4 5 6 7 8 9 10 11 12
a - 14 - 29 - 5 6 - 34 - 75 37 51
18 충돌
0 1 2 3 4 5 6 7 8 9 10 11 12
b - 14 - 29 - 5 6 - 34 - 75 37 51
18 재해시하지만 다시 충돌
0 1 2 3 4 5 6 7 8 9 10 11 12
c - 14 - 29 - 5 6 - 34 - 75 37 51
18 재해시하고 삽입
[그림 11-9] 오픈 주소법을 이용한 재해시
11•해시 451