해시 표 생 성 (c 언어 분리 링크 법 / 체인 주소 법)
6720 단어 알고리즘 관련 문제
typedef enum{
HASH_OK,
HASH_ERROR,
HASH_ADDED,
HASH_REPLACED_VALUE,
HASH_ALREADY_ADDED,
HASH_DELETED,
HASH_NOT_FOUND,
} HASH_RESULT;
typedef struct __HashEntry HashEntry;
struct __HashEntry{
union{
char *str_value;
double dbl_value;
int int_value;
} key;
union{
char *str_value;
double dbl_value;
int int_value;
long long_value;
void *ptr_value;
} value;
HashEntry *next;
};
struct __HashTable{
HashEntry **bucket;
int size;
HASH_RESULT last_error;
};
typedef struct __HashTable HashTable;
// hash_size , HashTable , NULL。
HashTable *create_hash(int hash_size);
해시 표 관련 설명: 1. HASHRESULT 형식 은 관련 함수 의 반환 형식 2. HashEntry 는 해시 표 에 저 장 된 요소 (즉, 키 값 은 키, value) 유형 3. HashTable 은 해시 표 입 니 다. 그 중에서 bucket 은 크기 가 size 이 고 요소 유형 은 4. HashEntry * 인 포인터 배열 해시 표 는 체인 주소 법 으로 충돌 을 처리 합 니 다.
create 를 실현 하 세 요hash 함수, 지정 한 크기 의 해시 표를 만 듭 니 다.
#include
HashTable* create_hash(int size)
{
HashTable* H = (HashTable*)malloc(sizeof(HashTable));
H->bucket = (HashEntry**)malloc(sizeof(HashEntry**) * size);
if (!H->bucket) {
free(H);
return NULL;
}
memset(H, 0, sizeof(HashTable));
H->size = size;
return H;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
인접표 1 (c 언어)인접표 저장 구조에서 그림의 기본 조작을 실현하는 insertvertex 및 insertarc, 관련 정의는 다음과 같습니다. 대답:...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.